PIVOT과 UNPIVOT은 SQL에서 데이터를 행(row)과 열(column) 간 변환하는 기능을 제공하는 절입니다.
이 기능은 MSSQL, Oracle 등 일부 RDBMS에서 지원하며,
MySQL과 PostgreSQL에서는 CASE WHEN 또는 GROUP BY 등을 사용하여 유사한 기능을 구현할 수 있습니다.
PIVOT은 특정 열의 고유한 값을 새로운 컬럼으로 변환하는 기능을 합니다.
SELECT *
FROM (원본 테이블)
PIVOT (
집계함수(집계할 컬럼)
FOR 피벗할 컬럼 IN (변환할 컬럼1, 변환할 컬럼2, ...)
) AS 별칭; | emp_id | year | salary |
|---|---|---|
| 101 | 2021 | 50000 |
| 101 | 2022 | 55000 |
| 102 | 2021 | 60000 |
| 102 | 2022 | 65000 |
SELECT *
FROM (SELECT emp_id, year, salary FROM salaries) AS src
PIVOT (
SUM(salary) FOR year IN ([2021], [2022])
) AS pvt; | emp_id | 2021 | 2022 |
|---|---|---|
| 101 | 50000 | 55000 |
| 102 | 60000 | 65000 |
✅ 각 연도를 새로운 컬럼으로 변환하여 출력
UNPIVOT은 여러 열을 하나의 행으로 변환하는 기능을 합니다.
SELECT *
FROM (변환할 테이블)
UNPIVOT (
변환할 컬럼 FOR 컬럼명 IN (컬럼1, 컬럼2, ...)
) AS 별칭; | emp_id | 2021 | 2022 |
|---|---|---|
| 101 | 50000 | 55000 |
| 102 | 60000 | 65000 |
SELECT emp_id, year, salary
FROM (SELECT emp_id, [2021], [2022] FROM salaries) AS src
UNPIVOT (
salary FOR year IN ([2021], [2022])
) AS unpvt; | emp_id | year | salary |
|---|---|---|
| 101 | 2021 | 50000 |
| 101 | 2022 | 55000 |
| 102 | 2021 | 60000 |
| 102 | 2022 | 65000 |
✅ 원래의 행 기반 데이터로 복원됨
MySQL과 PostgreSQL에는 PIVOT/UNPIVOT 절이 없으므로 CASE WHEN 또는 GROUP BY를 활용하여 유사한 변환을 수행합니다.
SELECT
emp_id,
SUM(CASE WHEN year = 2021 THEN salary END) AS "2021",
SUM(CASE WHEN year = 2022 THEN salary END) AS "2022"
FROM salaries
GROUP BY emp_id; SELECT emp_id, '2021' AS year, "2021" AS salary FROM salaries
UNION ALL
SELECT emp_id, '2022', "2022" FROM salaries; ✅ PIVOT과 UNPIVOT을 CASE WHEN, UNION ALL을 사용하여 구현 가능
| 기능 | 설명 | 주요 사용 사례 |
|---|---|---|
| PIVOT | 행 데이터를 열로 변환 | 연도별, 카테고리별 집계 데이터 |
| UNPIVOT | 열 데이터를 행으로 변환 | 정규화(Normalization), 데이터 분석 |
CASE WHEN과 UNION ALL을 활용.SQLD에서 점수를 가르는 건 어려운 이론보다 NULL 처리, 조인 조건 위치, 윈도우 함수의 동작 같은…
AI 이미지 생성 도구의 폭발적 보급으로 그래픽·콘텐츠 디자이너 일감이 실제로 줄고 있습니다. 어떤 직군이 먼저…
전기차 시장이 배터리 싸움에서 소프트웨어 전쟁으로 전환됐다. 테슬라의 AI·데이터 해자 vs 현대차의 SDV 전략, 진짜…
어제 미국에서 9월 생산자물가지수(PPI)가 나왔는데 숫자가 꽤 거칠었습니다. 그런데 간밤 뉴욕증시 3대 지수는 모두 올랐습니다.…
가계대출이 오랜만에 줄었다는 소식에 대출 문턱이 낮아지는 거냐고 묻는 분들이 많습니다. 금융당국이 10월 15일 발표한…
어제 코스피가 하루에 7% 넘게 빠졌다는 소식, 아침에 확인하고 놀라신 분들 많으실 텐데요. 그런데 밤사이…