우리는 종종 GROUP BY를 통해 데이터를 집계하곤 한다.
보통 여러 컬럼에 구분된 값을 집계할 때 CASE문을 사용하는데, PIVOT 함수를 활용하는 방법을 알아보자.
또한, 잘 알려져있지는 않지만 UNPIVOT 함수를 이용해 그 역의 형태로 되돌리는 방법도 알아보자.
#2. PIVOT
->
SELECT * FROM TMP
PIVOT (
SUM(CNT) FOR MON IN (
'M01' AS MON01
,'M02' AS MON02
,'M03' AS MON03
)
)
ORDER BY ID
;
#3. UNPIVOT
->
앞선 예제와는 반대로, 좌측(4rows) 형태에서 우측(12rows) 형태로 변환하려면, 아래와 같은 쿼리를 이용한다.
SELECT * FROM TMP
UNPIVOT (
CNT FOR MON IN (
MON01 AS 'M01'
,MON02 AS 'M02'
,MON03 AS 'M03'
)
)
ORDER BY ID, MON
;
댓글 없음:
댓글 쓰기