PIVOTUNPIVOT은 SQL에서 데이터를 행(row)과 열(column) 간 변환하는 기능을 제공하는 절입니다.

  • PIVOT: 행 데이터를 열로 변환
  • UNPIVOT: 열 데이터를 행으로 변환

이 기능은 MSSQL, Oracle 등 일부 RDBMS에서 지원하며,
MySQL과 PostgreSQL에서는 CASE WHEN 또는 GROUP BY 등을 사용하여 유사한 기능을 구현할 수 있습니다.

1. PIVOT 절 (행 → 열 변환)

PIVOT은 특정 열의 고유한 값을 새로운 컬럼으로 변환하는 기능을 합니다.

📌 PIVOT 기본 문법 (MSSQL 기준)

SELECT * 
FROM (원본 테이블)
PIVOT (
집계함수(집계할 컬럼)
FOR 피벗할 컬럼 IN (변환할 컬럼1, 변환할 컬럼2, ...)
) AS 별칭;

✅ 예제: 직원별 연도별 급여 데이터 변환

📌 원본 테이블 (salaries)

emp_idyearsalary
101202150000
101202255000
102202160000
102202265000

📌 PIVOT 적용

SELECT *
FROM (SELECT emp_id, year, salary FROM salaries) AS src
PIVOT (
SUM(salary) FOR year IN ([2021], [2022])
) AS pvt;

📌 변환 결과

emp_id20212022
1015000055000
1026000065000

각 연도를 새로운 컬럼으로 변환하여 출력

2. UNPIVOT 절 (열 → 행 변환)

UNPIVOT은 여러 열을 하나의 행으로 변환하는 기능을 합니다.

📌 UNPIVOT 기본 문법 (MSSQL 기준)

SELECT * 
FROM (변환할 테이블)
UNPIVOT (
변환할 컬럼 FOR 컬럼명 IN (컬럼1, 컬럼2, ...)
) AS 별칭;

✅ 예제: PIVOT 변환된 데이터 되돌리기

📌 기존 변환된 테이블

emp_id20212022
1015000055000
1026000065000

📌 UNPIVOT 적용

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_idyearsalary
101202150000
101202255000
102202160000
102202265000

원래의 행 기반 데이터로 복원됨

3. MySQL 및 PostgreSQL에서 PIVOT/UNPIVOT 구현

MySQL과 PostgreSQL에는 PIVOT/UNPIVOT 절이 없으므로 CASE WHEN 또는 GROUP BY를 활용하여 유사한 변환을 수행합니다.

✅ PIVOT 구현 (MySQL, PostgreSQL)

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;

✅ UNPIVOT 구현 (MySQL, PostgreSQL)

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을 사용하여 구현 가능

4. PIVOT과 UNPIVOT 비교

기능설명주요 사용 사례
PIVOT행 데이터를 열로 변환연도별, 카테고리별 집계 데이터
UNPIVOT열 데이터를 행으로 변환정규화(Normalization), 데이터 분석

5. 결론

  • PIVOT행을 열로 변환, UNPIVOT열을 행으로 변환하는 기능.
  • MSSQL, Oracle에서 기본 제공하며, MySQL, PostgreSQL에서는 CASE WHENUNION ALL을 활용.
  • 대량의 데이터에서 사용할 경우 성능 최적화 필요.

zerg96

Recent Posts

충격! 코스피 8% 폭락에 SK텔레콤 AI 차단까지 – 한국의 AI 도박이 터졌다

코스피 8% 폭락, 서킷브레이커 발동, SK텔레콤 Claude AI 차단까지. 한국의 AI 레버리지 버블이 단 하루…

1개월 ago

당신 얼굴이 이미 쓰이고 있다… AI 딥페이크 범죄, 생각보다 훨씬 심각합니다

SNS 사진 1장으로 30초 만에 딥페이크 영상이 완성됩니다. 당신의 얼굴이 이미 범죄에 악용되고 있을 수…

1개월 ago

당신 얼굴이 이미 쓰이고 있다 — AI 딥페이크 범죄, 생각보다 훨씬 심각합니다

SNS 사진 1장으로 30초 만에 딥페이크 영상이 완성됩니다. 당신의 얼굴이 이미 범죄에 악용되고 있을 수…

1개월 ago

달러·원 환율 급등, 지금 당신이 꼭 알아야 할 것들

달러/원 환율이 급등하는 이유와 실생활 영향을 정리했습니다. 지금 당장 활용할 수 있는 환전·투자 대응 전략까지…

1개월 ago

미래에셋·미래에셋벤처투자·미래에셋생명 동반 급등, 스페이스X와 무슨 관계?

미래에셋·미래에셋벤처투자·미래에셋생명이 동반 급등한 이유는 스페이스X 상장 기대감입니다. 세 회사가 스페이스X와 어떻게 연결되어 있는지 상세히 분석했습니다.

1개월 ago

스페이스X 상장 D-데이? 일론 머스크가 절대 말 안 하는 진짜 이유

스페이스X 상장이 계속 미뤄지는 진짜 이유를 파헤쳤습니다. 화성 계획, 스타링크 분리, 국방 계약... 머스크가 절대…

1개월 ago