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 6387 게시물 읽기
No. 6387
쿼리 변경...
작성자
짱가
작성일
2012-06-21 15:18
조회수
7,482

 

안녕하세요.. mssql 2000 을 사용중인 초보입니다..

다름이 아니라 기존에 있는쿼리를 가지고 새로운 보고서를 만들려고 하는데.. 잘 안되서 이렇게 도움을 구하고자 합니다..

기존 쿼리는..

DECLARE @BGNDT VARCHAR(8)  

DECLARE @ENDDT VARCHAR(8)  

DECLARE @DPTCD VARCHAR(5)  

SET @BGNDT = '20120520'  

SET @ENDDT = '20120621'  

SET @DPTCD = '20003'  

SELECT A.SEL_DT, A.SEL_NO AS SELDTNO, 

SUM((CASE WHEN B.XWH_SLF IN ('20002', '20013') THEN -1 * (A.SEL_AMT + A.VAT) ELSE (A.SEL_AMT + A.VAT) END)) AS SEL_AMT, 

SUM(A.DSC_AMT)AS DSC_AMT, A.DLCO_CD,

(SELECT C.DLCO_NM 

FROM TBL_DLCO_INFO AS C 

WHERE C.DLCO_CD = A.DLCO_CD) AS DLCO_NM, 

SUM(B.QTY) QTY,  

(SELECT G.RCPO_NM 

FROM TBL_RCPO_BASE AS G 

WHERE G.RCPO_CD = B.XWH_SLF) AS XWH_SLF,  

SUM((CASE WHEN B.XWH_SLF IN ('20002', '20013') THEN -1 * (B.RL_SEL_AMT + B.RL_VAT) ELSE (B.RL_SEL_AMT + B.RL_VAT) END)) AS SEL_AMT_DTLS 

FROM TBL_SEL_SLIP AS A 

JOIN TBL_SEL_DTLS AS B 

ON A.SEL_DT = B.SEL_DT 

AND A.SEL_NO = B.SEL_NO 

LEFT OUTER JOIN TBL_GDS_INFO GDS 

ON B.GDS_CD = GDS.GDS_CD 

LEFT OUTER JOIN TBL_DLCO_INFO DLCO 

ON A.DLCO_CD = DLCO.DLCO_CD  

WHERE 1 = 1  

AND A.DPT_CD = @DPTCD   

AND (A.SEL_DT >= @BGNDT 

AND A.SEL_DT <= @ENDDT) 

AND A.DEL_YN = 'N'  

GROUP BY A.SEL_DT, A.SEL_NO,  A.DLCO_CD,  B.XWH_SLF , B.SEQ 

이구요..

결과 물은..

일자            순번   판매가                    할인가    코드           거래처명                                    수량  제품구분        부가세

20120521 1 54070500.0000 .0000 005526 업체1                                      300 정상출고 33069300.0000

20120521 1 54070500.0000 .0000 005526 업체1                                      300 정상출고 21001200.0000

20120521 2 6017400.0000 .0000 007140 업체2                                       36 정상출고 6017400.0000

20120521 3 10492500.0000 .0000 003585 업체3                                        20 정상출고 435000.0000

20120521 3 10492500.0000 .0000 003585 업체3                                        10 정상출고 825000.0000

20120521 3 10492500.0000 .0000 003585 업체3                                        10 정상출고 570000.0000

20120521 4 5077800.0000 .0000 004054 업체4                                         23 정상출고 1883700.0000

20120521 4 5077800.0000 .0000 004054 업체4                                         39 정상출고 3194100.0000

20120521 6 59780.0000        .0000 001527 업체5                                         1 정상출고 59780.0000

20120521 10 375000.0000 .0000 001647 업체6                                         1 정상출고 375000.0000

20120521 11 171000.0000 .0000 000841 업체7                                         1 정상출고 171000.0000

이런형태로 출력이 됩니다..

검색일자가 1월 10일 부터 5월20일까지 검색을 하면..

업체명                 1월          2월           3월              4월              5월                  전체함계액

업체1              1000         3000         5000           1000           5000             15000 

이렇게 보여주고 싶은데.. 집계내는게 너무 어렵네요..

1월은 10일부터의 금액이고.. 5월은20일까지의 액수 입니다... ㅠㅠ

초보다 보니 할수있는게 없네요.. 도움 부탁드리겠습니다.. 

 

수고하세요.

이 글에 대한 댓글이 총 2건 있습니다.

테이블 구조와 컬럼의 의미를 정확히는 모르겠지만 대충 아래와 같은 쿼리가 되지 않을까 싶습니다.

 

 SELECT rst.DLCO_CD

, SUM( [01] ) AS '01'
, SUM( [02] ) AS '02'
, SUM( [03] ) AS '03'
, SUM( [04] ) AS '04'
, SUM( [05] ) AS '05'
, SUM( saleSum ) AS tot
FROM (
SELECT tt.DLCO_CD
, CASE SUBSTRING( CONVERT( CHAR(7), tt.rmonth, 121 ), 6, 2 )
WHEN '01' THEN
saleSum
ELSE
0
END AS '01'
, CASE SUBSTRING( CONVERT( CHAR(7), tt.rmonth, 121 ), 6, 2 )
WHEN '02' THEN
saleSum
ELSE
0
END AS '02'
, CASE SUBSTRING( CONVERT( CHAR(7), tt.rmonth, 121 ), 6, 2 )
WHEN '03' THEN
saleSum
ELSE
0
END AS '03'
, CASE SUBSTRING( CONVERT( CHAR(7), tt.rmonth, 121 ), 6, 2 )
WHEN '04' THEN
saleSum
ELSE
0
END AS '04'
, CASE SUBSTRING( CONVERT( CHAR(7), tt.rmonth, 121 ), 6, 2 )
WHEN '05' THEN
saleSum
ELSE
0
END AS '05'
, saleSum 
FROM (
SELECT A.DLCO_CD
, DATEADD(MONTH, DATEDIFF(MONTH, 0, A.SEL_DT ), 0 ) AS rmonth
, SUM( (A.SEL_AMT + A.VAT) * CASE WHEN B.XWH_SLF IN ('20002', '20013') THEN -1 ELSE 1 END ) AS saleSum
FROM
TBL_SEL_SLIP AS A
INNER JOIN TBL_SEL_DTLS AS B ON A.SEL_DT = B.SEL_DT AND A.SEL_NO = B.SEL_NO 
GROUP BY A.DLCO_CD, DATEADD(MONTH, DATEDIFF(MONTH, 0, A.SEL_DT ), 0 )
) AS tt
) AS rst
GROUP BY rst.DLCO_CD
;
우욱님이 2012-06-24 14:10에 작성한 댓글입니다. Edit

감사합니다...

잘 해결 하였습니다...

초보입니다.(fightinggood)님이 2012-06-25 15:34에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6390insert 후 idx 값? [1]
이영주
2012-07-03
7847
6389sql로 loop처럼 처리하기 가능한지요 [2]
서정탁
2012-07-02
7482
6388시작번호, 끝번호 등록 프로시저 작성 [1]
정인수
2012-06-28
6737
6387쿼리 변경... [2]
짱가
2012-06-21
7482
6386시퀀스 문자열 증가 (A->B) [1]
초보
2012-06-20
7382
6385쿼리 조언 부탁드립니다. [2]
김종열
2012-06-18
7158
6383쿼리 질문입니다. [1]
정재훈
2012-06-08
6588
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.021초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다