안녕하세요.
SQL SERVER 2000에서 가변적으로 Crosstab / Pivot 유형으로 월별 현장/업체별로 금액을 구하는 방법에 대한 문의드리고자 합니다.
1. 현장 테이블(SPOT_TB)
-----------------------------------------
strHYNCDE strHYNNAME
-----------------------------------------
0101 영월지점
0115 금호강릉
0177 쌍용잠실
....
-----------------------------------------
2. 업체 테이블(CUSTOMER_TB)
-----------------------------------------
strCUSCDE strCUSNAME
-----------------------------------------
A0001 아이월드(주)
B0031 니즈종합상사
D0012 성진상사
....
-----------------------------------------
3. 거래 테이블(TRANSATION_TB)
----------------------------------------------------------------------
strCUSCDE strHYNCDE dtWRKDAT strSPEC intSUM
----------------------------------------------------------------------
A0001 0101 2007-07-04 품목 A 35,000
A0001 0177 2007-07-12 품목 C 52,000
B0031 0101 2007-07-22 품목 Y 12,000
B0031 0115 2007-07-28 품목 Z 83,000
D0012 0115 2007-07-08 품목 B 21,000
D0012 0101 2007-07-22 품목 K 15,000
D0012 0177 2007-08-02 품목 D 33,000 <= 8월분이므로 제외
.....
----------------------------------------------------------------------
의 형태가 있을때...
SELECT
TRANSACTION_TB.strCUSCDE,
TRANSACTION_TB.strHYNCDE,
SUM(convert(numeric(14, 2), TRANSACTION_TB.intSUM)) AS SUMPRICE
FROM
TRANSACTION_TB
WHERE
(substring(convert(varchar(10), TRANSACTION_TB.dtWRKDAT), 7, 4) + substring(convert(varchar(10), TRANSACTION_TB.dtWRKDAT), 1, 2) = '200707')
GROUP BY
TRANSACTION_TB.strCUSCDE,
TRANSACTION_TB.strHYNCDE
ORDER BY
TRANSACTION_TB.strCUSCDE
위의 쿼리를 이용해서 2007년 7월에 해당되는 수불현황을 아래 처럼 집계를 했습니다.
--------------------------------------------
strCUSCDE strHYNCDE SUMPRICE
--------------------------------------------
A0001 0101 35,000
A0001 0177 52,000
B0031 0101 12,000
B0031 0115 83,000
D0012 0115 21,000
D0012 0101 15,000
--------------------------------------------
근데, 위의 결과를 이용해서 CROSS TAB / PIVOT 형태로 구현을 하고 싶습니다.
여기서 중요한 것은 strCUSCDE, strHYNCDE 가 고정된 것이 아니라 가변적입니다.
그러므로 동적으로 CROSS TAB 쿼리가 생성되어져야 합니다.
최종적으로 출력되어져야 할 결과는 다음과 같습니다.
2007년 07월분 현장별 집계표
===========================
------------------------------------------------------------------------------
영월지점(0101) 금호강릉(0115) 쌍용잠실(0177) total
------------------------------------------------------------------------------
아이월드(주) 35,000 0 52,000 87,000
니즈종합상사 12,000 83,000 0 95,000
성진상사 15,000 21,000 0 36,000
------------------------------------------------------------------------------
TOTAL 62,000 104,000 52,000 218,000
------------------------------------------------------------------------------
위 처럼 결과물이 나오면 됩니다.
계속 고민중인데 쉽게 답이 안나오네요. 많은 조언을 부탁드립니다.
감사합니다. |