database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 3873 게시물 읽기
No. 3873
SQL SERVER 2000에서 가변적으로 Crosstab / Pivot 유형으로 월별 현장/업체별로 금액을 구하는 방법에 대한 문의..
작성자
이쁜이
작성일
2007-11-13 16:23
조회수
4,442

안녕하세요.

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

------------------------------------------------------------------------------

 

위 처럼 결과물이 나오면 됩니다.

 

계속 고민중인데 쉽게 답이 안나오네요.  많은 조언을 부탁드립니다.

감사합니다.

이 글에 대한 댓글이 총 1건 있습니다.
http://www.devpia.com/Maeul/Contents/Detail.aspx?BoardID=38&MAEULNO=16&no=68555&ref=68550&page=1#Contents68555

여기에 답이 있네염..
.님이 2007-11-13 17:53에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
3876분산환경 DB 에서 트랜잭션 오류가 납니다. [2]
이티
2007-11-15
14790
3875select count(field_name) from tbl_name 처리 속도
MC02
2007-11-15
3319
3874정렬문제 [1]
손님
2007-11-14
3120
3873SQL SERVER 2000에서 가변적으로 Crosstab / Pivot 유형으로 월별 현장/업체별로 금액을 구하는 방법에 대한 문의.. [1]
이쁜이
2007-11-13
4442
3872MS ACCESS의 간단한 질문 [1]
김서방
2007-11-13
2962
3871SQL Server 로그 [1]
처버
2007-11-12
4685
3870문자를 날짜 변환 [1]
초보자
2007-11-12
4390
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.028초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다