며칠전에 올렸던 질문입니다.
JANGSEKWHAN 님이 union 명령을 권하시더군요.
질문은 아래와 같습니다.
판매관리 프로그램을 작성중입니다.
interbase db를 사용하고 있습니다.
혹시 저와 같은 일을 해보신 분이 계시면 도움좀 부탁드릴께요.
그러니까 dbgrid에 날짜가 변경될 때마다 합계를 보여 주어야 합니다. db에 까지 보관될 필요는 없고 query 명령으로 화면에만
합계란이 칸이 삽입되어 일자가 변경시 마다 보여 주여야 합니다.
그리고 맨 마지막에는 총 합계가 보여 지는 겁니다.
제가 query 명령에는 정말 초보자입니다.
제가 사용한 query 명령어를 올려볼게요.
union 명령을 찾아서 해보았는데도 잘 않되는 군요.
첫번째로는 원하는 날짜를사용자가 받아야 합니다.
입력예 2001/03/01 ~ 2001/03/08 입력을 받으면
업체별로 해달일자의 판매 상품을 보여주면서 일자별 집계를 내주고 최종적으로 총 합계를 내주어야 합니다.
업체 마스타 table : DM.CusCDS
상품판매 table : DM.geomyung3CDs
dbgrid 화면에 display 되는건
날짜 전표번호 상품명 총 수량 단가 금액
2001/03/01 1 상품1 10 300 3,000
2001/03/01 2 상품2 10 200 2,000
2001/03/01 3 상품 3 10 300 3,000
합계 8,000
2001/03/02 1 상품1 10 400 4,000
2001/03/02 2 상품2 10 200 2,000
2001/03/02 3 상품3 10 100 1,000
합계 7,000
제가 구현한 query 조건
select GEO_YMD, GEO_JUN_NO, GEO_NAME,
GEO_TSURANG, GEO_DANGA, SUM(GEO_KUMAK) AS GEO_TOTAL
from GEOMYUNG
WHERE CUS_CODE = :param1 and GEO_YMD BETWEEN :param2 AND :param3
group by
GEO_YMD, GEO_JUN_NO, GEO_NAME, GEO_TSURANG,
GEO_DANGA
union
select '합계',0, null, null, 0, 0, SUM(GEO_KUMAK)
from GEOMYUNG (너무 몰라서 테스트 식으로 넣어 두었습니다.) 이부분 도움좀
부탁드립니다.
DM.geomyung3CDs.Params.ParamValues['Param1'] := DM.CusCDS.FieldByName('CUS_CODE').asString;
DM.geomyung3CDs.Params.ParamValues['Param2']:= '2001/03/01'; DM.geomyung3CDs.Params.ParamValues['Param3']:= '2001/03/06';
DM.geomyung3CDs.Open;
시간이 너무 지연되었습니다.
아시는 분 꼭 답변좀 부탁드립니다.
감사합니다.
>
> 업체 마스타 table : DM.CusCDS
> 상품판매 table : DM.geomyung3CDs
>
> dbgrid 화면에 display 되는건
> 날짜 전표번호 상품명 총 수량 단가 금액
> 2001/03/01 1 상품1 10 300 3,000
> 2001/03/01 2 상품2 10 200 2,000
> 2001/03/01 3 상품 3 10 300 3,000
> 합계 8,000
> 2001/03/02 1 상품1 10 400 4,000
> 2001/03/02 2 상품2 10 200 2,000
> 2001/03/02 3 상품3 10 100 1,000
> 합계 7,000
>
> 제가 구현한 query 조건
> select GEO_YMD, GEO_JUN_NO, GEO_NAME,
> GEO_TSURANG, GEO_DANGA, SUM(GEO_KUMAK) AS GEO_TOTAL
> from GEOMYUNG
> WHERE CUS_CODE = :param1 and GEO_YMD BETWEEN :param2 AND :param3
> group by
> GEO_YMD, GEO_JUN_NO, GEO_NAME, GEO_TSURANG,
> GEO_DANGA
>
> union
> select '합계',0, null, null, 0, 0, SUM(GEO_KUMAK)
> from GEOMYUNG (너무 몰라서 테스트 식으로 넣어 두었습니다.) 이부분 도움좀
> 부탁드립니다.
>
> DM.geomyung3CDs.Params.ParamValues['Param1'] := DM.CusCDS.FieldByName('CUS_CODE').asString;
> DM.geomyung3CDs.Params.ParamValues['Param2']:= '2001/03/01'; DM.geomyung3CDs.Params.ParamValues['Param3']:= '2001/03/06';
> DM.geomyung3CDs.Open;
>
=>>>
union
select '합계',0, null, null, 0, 0, SUM(GEO_KUMAK)
from GEOMYUNG
필드의 수를 하나 줄여보세요. 처음 부분에 select 필드의 개수(현재 6개)와 union이후 select 필드의개수(현재 7개)가 동일 해야 합니다.
그런데요...아마 맨 마지막에만 합계가 나올거에요....아마도
도움이 되셨으면 합니다.
초보 hobakpa;