GROUPIN_ID와 ROLLUP을 이용하여 합계와 소계를 내려고 하는데 이중으로 들어가는 소계가 있어서
너무 어렵네요.. 도와주세요ㅜㅜ
SELCT
GROUPING_ID(CASE WHEN SUBSTRING(A.NO_DEPT,2,1) <> 'X' THEN SUBSTRING(A.NO_DEPT,1,1) ELSE SUBSTRING(A.NO_DEPT,1,1)+'X' END) AS GROUP5
, GROUPING_ID(A.NO_DEPT) AS GROUP2
, GROUPING_ID(A.NO_DISP) AS GROUP3
, GROUPING_ID(A.NM_DISP) AS GROUP4
, A.NO_DEPT
, A.NO_DISP
, A.NM_DISP
, (CASE WHEN A.SGP_ORD = 'Y' THEN 'SGP' ELSE CASE WHEN A.SGP_ORD = 'C' THEN 'KR' END END) AS SGP_ORD
,SUM(ORD) AS ORD
FROM #SIX_MONTH_GROUP A
GROUP BY ROLLUP((A.H_DEPT), (A.H_DEPT, A.SGP_ORD),(CASE WHEN SUBSTRING(A.NO_DEPT,2,1)<>'X' THEN SUBSTRING(A.NO_DEPT,1,1) ELSE SUBSTRING(A.NO_DEPT,1,1)+'X' END),( A.NO_DEPT), (A.NO_DISP), (A.NM_DISP, A.SGP_ORD))
HAVING
(GROUPING_ID(CASE WHEN SUBSTRING(A.NO_DEPT,2,1)<>'X' THEN SUBSTRING(A.NO_DEPT,1,1) ELSE SUBSTRING(A.NO_DEPT,1,1)+'X' END)=1)
OR (GROUPING_ID(A.NO_DEPT) =1 AND A.H_DEPT LIKE '125%')
OR (GROUPING_ID(A.H_DEPT)=0 AND GROUPING_ID(A.NO_DEPT)=0 AND GROUPING_ID(A.NO_DISP)=0 AND GROUPING_ID(A.NM_DISP)=0)
위와 같은 쿼리로 작성된 결과는 아래와 같습니다.
H_DEPT|NO_DEPT|NO_DISP|NM_DISP 부분은 소계및 합게를 내기 위해 그룹지어지는 컬럼들입니다. (합계되는 컬럼들은 따로 있습니다. ) 이 컬럼 값들을 그룹을 지어 최종 소계나 합계를 내고 싶습니다.
<현재 출력>
H_DEPT|NO_DEPT|NO_DISP|NM_DISP
10|1A|1|가|KR
10|1A|2|나|KR
10|1A|2|나(계획분)|KR
10|1A|3|다|KR
10|1B|1|라|KR
10|1B|1|라(계획분)|KR
10|1B|2|마|KR
10|1C|1|바|KR
10|1C|1|바(계획분)|KR
10|1D|1|바|KR
10|1D|1|바(계획분)|KR
10|NULL|NULL|NULL|KR <- SGP_ORD 컬럼값이 KR인 부분으로 묶여 소계
10|1B|1|라|SGP
10|NULL|NULL|NULL|SGP <- SGP_ORD 컬럼값이 SGP인 부분으로 묶여 소계
10|NULL|NULL|NULL|NULL <- H_DEPT로 합계
20|2A|1|라|KR
20|2A|1|라(계획분)|KR
20|2B|1|라|KR
20|2B|1|라(계획분)|KR
20|2C|1|라|KR
20|2C|1|라(계획분)|KR
20|2D|1|라|KR
20|2D|1|라(계획분)|KR
20|2E|1|라|KR
20|NULL|NULL|NULL|KR <- SGP_ORD 컬럼값이 KR인 부분으로 묶여 소계
20|2X|1|PE|KR
20|2X|5|CDCA|KR
20|2X|7|CDCC|KR
20|NULL|NULL|NULL|KR <- SGP_ORD 컬럼값이 KR인 부분으로 묶여 소계
20|NULL|NULL|NULL|KR
20|2A|1|라|SGP
20|2B|1|라|SGP
20|2C|1|라|SGP
20|2D|1|라|SGP
20|2E|1|라|SGP
20|NULL|NULL|NULL|SGP <- SGP_ORD 컬럼값이 SGP인 부분으로 묶여 소계
20|NULL|NULL|NULL|SGP
20|NULL|NULL|NULL|NULL <- H_DEPT로 합계
<원하는 출력>
H_DEPT|NO_DEPT|NO_DISP|NM_DISP
10|1A|1|가|KR
10|1A|2|나|KR
10|1A|2|나(계획분)|KR
10|1A|3|다|KR
10|1B|1|라|KR
10|1B|1|라(계획분)|KR
10|1B|1|라|SGP
10|1B|2|마|KR
10|1C|1|바|KR
10|1C|1|바(계획분)|KR
10|1D|1|바|KR
10|1D|1|바(계획분)|KR
10|NULL|NULL|NULL|KR <- SGP_ORD 컬럼값이 KR인 부분으로 묶여 소계
10|NULL|NULL|NULL|SGP <- SGP_ORD 컬럼값이 SGP인 부분으로 묶여 소계
10|NULL|NULL|NULL|NULL <- H_DEPT로 합계
20|2A|1|라|KR
20|2A|1|라(계획분)|KR
20|2A|1|라|SGP
20|2B|1|라|KR
20|2B|1|라(계획분)|KR
20|2B|1|라|SGP
20|2C|1|라|KR
20|2C|1|라(계획분)|KR
20|2C|1|라|SGP
20|2D|1|라|KR
20|2D|1|라(계획분)|KR
20|2D|1|라|SGP
20|2E|1|라|KR
20|2E|1|라|SGP
20|NULL|NULL|NULL|KR <- SGP_ORD 컬럼값이 KR인 부분으로 묶여 소계
20|NULL|NULL|NULL|SGP <- SGP_ORD 컬럼값이 SGP인 부분으로 묶여 소계
20|2X|1|PE|KR
20|2X|5|CDCA|KR
20|2X|7|CDCC|KR
20|NULL|NULL|NULL|KR <- 2X팀의 SGP_ORD 컬럼값이 KR인 부분으로 묶여 소계
20|NULL|NULL|NULL|KR <- H_DEPT 20이며 SGP_ORDRK KR인 값들의 합계
20|NULL|NULL|NULL|SGP <- H_DEPT 20이며 SGP_ORDRK SGP인 값들의 합계
20|NULL|NULL|NULL|NULL <- H_DEPT로 합계
부탁드립니다! 감사합니다ㅜㅜ
|