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을 활용.1. 타입스크립트 개요 타입스크립트(TypeScript)는 마이크로소프트(Microsoft)가 개발한 자바스크립트(JavaScript)의 상위 집합(Superset) 언어입니다.즉, 자바스크립트에 정적 타입(Static Type)을 추가하고,…
윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…
안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…
1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…