본문 바로가기
Programming/SQL

[SQL] PIVOT & UNPIVOT 함수와 예제

by 코딩하는 금융인 2023. 7. 5.

안녕하세요.

SQL PIVOT과 UNPIVOT 함수 개념과 간단한 예제에 대해 알아보겠습니다.

 

 SQL PIVOT & UNPIVOT

▣  PIVOT & UNPIVOT이란?

PIVOT : 데이터 테이블에서 행의 집합을 열로 나타내줌

SELECT COL1, [COL_PIVOTS…] FROM Table
PIVOT (agg_func(COL) FOR COL_PIVOT in ([COL_PIVOTS…])) as table_pvt

- UNPIVOT : 데이터 테이블에서 열을 행의 집합으로 나타내줌

SELECT COL1, COL_PIVOT, COL FROM Table
UNPIVOT (COL FOR COL_PIVOT in ([COL_PIVOTS…])) as table_unpvt

- 즉, PIVOT는 행을 열로 변환하고 UNPIVOT은 그와 반대로 열을 행으로 변환함

 

※ 과거 SQL로 행과 열을 다른 방식으로 바꾸는 방법에 대해 포스팅한 글이 있으니 참고하시기 바랍니다.

2022.11.12 - [Programming/SQL] - [MySQL] 행과 열 바꾸기 (Transpose)

 

▣ SQL 활용 예시

: 예시 데이터 GDP

year quarter gdp
2020 1Q 489
2020 2Q 381
2020 3Q 521
2020 4Q 510
2021 1Q 490
2021 2Q 477
2021 3Q 509
2021 4Q 505
2022 1Q 554
2022 2Q 611
2022 3Q 630
2022 4Q 607

 

- PIVOT 활용하여 GDP 데이터 연도-분기별로 피봇팅하기

-- PIVOT 활용하기
SELECT year, [1Q], [2Q], [3Q], [4Q]
FROM gdp_table
PIVOT (sum(gdp) FOR quarter in([1Q], [2Q], [3Q], [4Q])) as GDP_pvt

: 결과 보기

year 1Q 2Q 3Q 4Q
2020 489 381 521 510
2021 490 477 509 505
2022 554 611 630 607

 

- UNPIVOT 활용하여 GDP 데이터 피봇팅 해제하기 (원래대로 되돌리기)

--UNPIVOT 활용하기
SELECT year, quarter, gdp
FROM GDP_pvt
UNPIVOT (gdp FOR quarter in ([1Q], [2Q], [3Q], [4Q])) as GDP_unpvt

 

반응형

댓글