먼저 이글을 읽어 주셔서 감사합니다.
다름이 아니오라
보수테이블에 직기명과 직기보수에 사용된 부품명 그리고 그 부품을 산 거래처명과 보수에 사용된 부품의 수량이 들어가 있는데
어떤 직기에 어떤 거래처의 부품이 얼마나 보수에 사용되었는지를 질의를 하는데
저는
with query1 do begin
close;
sql.clear;
sql.add('select 직기명, 거래처명, sum(보수량) 거래처별보수량 from "보수테이블"');
sql.add('group by 거래처명');
open;
end;
이렇게 코드를 작성하여 실행을 시켰더니
//...sql error ... 'sum(보수량) 거래처별보수량' 쿼리식의 연산자가 없는 구문 오류입니다.//
라는 에러가 나네요.
무엇이 잘못된거죠
고수님들 좀 갈켜주세요
그럼 기다리고 있을께요
그럼 이만...
> 먼저 이글을 읽어 주셔서 감사합니다.
> 다름이 아니오라
> 보수테이블에 직기명과 직기보수에 사용된 부품명 그리고 그 부품을 산 거래처명과 보수에 사용된 부품의 수량이 들어가 있는데
> 어떤 직기에 어떤 거래처의 부품이 얼마나 보수에 사용되었는지를 질의를 하는데
> 저는
>
> with query1 do begin
> close;
> sql.clear;
> sql.add('select 직기명, 거래처명, sum(보수량) 거래처별보수량 from "보수테이블"');
> sql.add('group by 거래처명');
> open;
> end;
>
> 이렇게 코드를 작성하여 실행을 시켰더니
>
> //...sql error ... 'sum(보수량) 거래처별보수량' 쿼리식의 연산자가 없는 구문 오류입니다.//
> 라는 에러가 나네요.
> 무엇이 잘못된거죠
> 고수님들 좀 갈켜주세요
> 그럼 기다리고 있을께요
>
> 그럼 이만...
>
group by 문장을 사용하여 select 할때에 해당필드값 자체를 나타낼때는 group by 다음에 선언된 필드명이 아니고서, 기입하면 에러가 발생하는걸로 알고 있거든요.
그러니까 위의 문장에서 거래처명으로 group by를 하셨는데... 직기명필드가 select 문장에 있어서 그런것이 아닐까 생각이듭니다. 직기명을 빼시든지...아니면 group 을 직기명과 거래처명 두개로 하시든지 해야할겁니다.
물론 거래처명으로 group 한것을 직기명, 거래처명으로 group 하면 원하시는 결과가 나오지 않겠죠.. 음.. 그렇지만 직기명이 여러가지인데 같은 거래처명일경우 거래처명으로 group을 지을경우 직기명은 어떤것을 출력해야할지 판단할수가 없지 않나요? 꼭 위와같이 출력할수 있는 방법은 잘 모르겠네요. 실력이 딸려서...