쵸코코딩/DB

MSSQL- ROLLUP / CUBE - GROUPING()

OK_SON 2020. 6. 19. 14:33

ROLLUP, CUBE에 의해 산출된 통계 결과에서

GROUPING의 인자로 들어가는 컬럼의 값이 NULL일 경우 1, NULL이 아닐 경우 0으로 표기된다.

 

[예제]

1

2

3

4

5

SELECT GROUPING(분류)

    , 분류, SUM(개수) AS '개수', SUM(금액) AS '금액'

FROM A

GROUP BY 분류

WITH ROLLUP

 

위의 예제와 같이 분류 컬럼의 값이 NULL일 경우 GROUPING의 값은 1로 나온다

 

따라서 ROLLUP, CUBE로 합계를 낼 경우

GROUPING을 통해 NULL로 나온 결과의 값을 '합계'라는 텍스트로 변경해줄 경우 사용할 수 있다.

 

1

2

3

4

5

6

SELECT CASE WHEN GROUPING(분류) = '1' THEN '합계'

        ELSE 분류 END AS '분류' 

    , SUM(개수) AS '개수', SUM(금액) AS '금액'

FROM A

GROUP BY 분류

WITH ROLLUP

[출처] [MSSQL] ROLLUP 그룹 함수, GROUPING [소계, 합계]|작성자 꽁쥐

'쵸코코딩 > DB' 카테고리의 다른 글

MSSQL - 중복ROW 출력  (0) 2020.06.19
MSSQL - COUNT() - GROUP BY 없이 Count  (0) 2020.06.19
MSSQL - ROW_NUMBER() - ORDER BY 정렬 없이 순번 부여  (0) 2020.06.19
MSSQL - ROLLUP / CUBE  (0) 2020.06.19
MSSQL - COALESCE()-ISNULL() 축약  (0) 2020.06.19