728x90
반응형
데이터를 분석하다보면 행을 열로, 열을 행으로 바꾸는 작업이 필요할 때가 있다.
오라클에서는 쉽게 처리할 수 있도록 PIVOT과 UNPIVOT 기능을 제공한다.
PIVOT
PIVOT은 행 데이터를 열로 바꾸는 기능을 한다.
예로 월별 매출 데이터를 각 월로 정리하고 싶을때 유용하다.
컬럼을 각 월로 지정해도 되지만 복잡해진다.
PIVOT 예시 데이터 (SALES)
YEAR | MONTH | AMOUNT |
2023 | JAN | 1000 |
2023 | FEB | 1200 |
2023 | MAR | 900 |
PIVOT SQL 예제
SELECT *
FROM (
SELECT
YEAR
, MONTH
, AMOUNT
FROM SALES
)
PIVOT (SUM(AMOUNT) FOR MONTH IN ('JAN' AS JAN, 'FEB' AS FEB, 'MAR' AS MAR))
PIVOT SQL 결과
YEAR | JAN | FEB | MAR |
2023 | 1000 | 1200 | 900 |
PIVOT 사용 팁
- FOR MONTH IN (...) 부분은 열 이름이 고정되어야 한다.
- AS를 통해 열 이름을 명시적으로 지정 가능
- 대게 SUM, AVG 등 집계 함수와 함께 자주 사용
UNPIVOT
PIVOT과 반대로 열 데이터를 행으로 바꾸는 기능
보고서처럼 정리된 데이터를 다시 분석 가능한 형태로 바꿀 때 사용
UNPIVOT 예시 데이터 (PIVOTED_SALES)
YEAR | JAN | EFB | MAR |
2023 | 1000 | 1200 | 900 |
UNPIVOT SQL 예제
SELECT *
FROM PIVOTED_SALES
UNPIVOT (AMOUNT FOR MONTH IN (JAN AS 'JAN', FEB AS 'FEB', MAR AS 'MAR'));
UNPIVOT SQL 결과
YEAR | MONTH | AMOUNT |
2023 | JAN | 1000 |
2023 | FEB | 1200 |
2023 | MAR | 900 |
UNPIVOT 사용 팁
- FOR 컬럼명 IN (...) 안에 변환할 열 목록을 지정
- 열 이름을 문자열로 지정할 수 있어 가독성 향상
728x90
반응형
'개발 > ORACLE' 카테고리의 다른 글
ORACLE - WITH절(서브쿼리 팩터링) (0) | 2025.05.30 |
---|---|
ORACLE - INSERT WITH절에 FUNCTION 사용시 오류 (ORA-32034) (3) | 2025.03.07 |
ORACLE - AUTO_INCREMENT 기능 구현 (0) | 2025.01.20 |
ORACLE - ORA-25156 ANSI 조인, (+) (2) | 2024.11.20 |
Oracle 힌트절 (1) | 2024.11.07 |