안녕하세요.
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
반응형
'Programming > SQL' 카테고리의 다른 글
[SQL] 그룹별 비율 구하기(RATIO_TO_REPORT) (0) | 2023.10.29 |
---|---|
[SQL] 구분자 추가하기 (QUOTENAME) (4) | 2023.10.22 |
[SQL] 그룹 소계 함수 및 예제 (ROLLUP, CUBE) (1) | 2023.07.02 |
[SQL] 다중 행 연산자 ALL & ANY (3) | 2023.06.30 |
[SQL] VIEW 쿼리 내용 확인하기 (4) | 2023.06.29 |
댓글