델파이5를 쓰고 있습니다.
각 거래처의 이월, 매출, 수금 그리고 미수잔액을 구하여 보여주는 건데요
스트링 그리드에 출력을 합니다.
그런데 문제는 미수잔액이 많은 업체별로 정렬을 해야하는 경우가 생겼습니다!
워낙 여러테이블에서 내용을 가져오는지라 어떻게 해야할지 모르겠네요.
(아래 쿼리 참조.)
궁금한 것은..
1. 다음 쿼리 결과내에서 group by 및 이월+매출-수금= 미수잔액이 나오게끔 안 될까요?
2. 그게 안된다면 배열로서 일단 집어넣어서 정렬을 한 다음 스트링 그리드에 보여주는건데요.
아니, 사실 이건 해봤는데 영 불안해서요. 더 괜찮은 방법이 없을까요?
여러군데 물어봤는데 괜찮은 방법이 없어서 여기까지 오게되었네요.^^;
//--------------------------------------------------------------------------------------------------
SELECT a.client, b.name, '1' AS seq, sum(a.amount) AS aamount, 0 AS cash, 0 AS loss, 0 AS profit, 0 AS buyamount
FROM sellm005 AS a LEFT JOIN client AS b ON a.client=b.client
WHERE a.sell_date<='20031231' And (a.gubun='0' Or a.gubun='4')
GROUP BY a.client, b.name;
//각 거래처별 년도까지의 매출금액입니다.
union all
SELECT a.client, b.name, '2' AS seq, 0 AS amount, sum(a.debit) AS cash, 0 AS loss, 0 AS profit, 0 AS buyamount
FROM gl005 AS a LEFT JOIN client AS b ON a.client=b.client
WHERE a.account='004' And a.sb_gubun='1'
GROUP BY a.client, b.name;
//각 거래처별 수금금액입니다.(은행이체)
union all
select a.client, b.name, '0' as seq,
sum(a.debit) as amount, 0 as cash, 0 as loss, 0 as profit, 0 as buyamount
from vp004 a left join client b on a.client = b.client
where a.account = '014'
group by a.client, b.name
//이월잔액쪽 입니다.
union all
SELECT a.client, b.name, '3' AS seq, 0 AS aamount, sum(a.amount) AS cash, sum(a.loss) AS aloss, sum(a.profit) AS aprofit, 0 AS buyamount
FROM SCASH005 AS a LEFT JOIN client AS b ON a.client=b.client
GROUP BY a.client, b.name;
//각 거래처별 수금금액(어음쪽)
union all
SELECT a.client, b.name, '4' AS seq, 0 AS aamount, 0 AS cash, 0 AS loss, 0 AS profit, sum(a.amount) AS buyamount
FROM buym005 AS a LEFT JOIN client AS b ON a.client=b.client
WHERE a.sell_date<='20031231' And (a.gubun='0' Or a.gubun='4')
GROUP BY a.client, b.name;
//매입쪽 합계
union all
SELECT a.client, b.name, '5' AS seq, 0 AS aamount, sum(a.amount) AS cash, sum(a.loss) AS aloss, sum(a.profit) AS aprofit, 0 AS buyamount
FROM BCASH005 AS a LEFT JOIN client AS b ON a.client=b.client
GROUP BY a.client, b.name
ORDER BY b.name, a.client;
//매입쪽 지급.
|