PIVOT에 대해 알아보자
f
firststep 에디터
IT / 자격증 전문 라이터
2026년 2월 25일933
PIVOT에 대해 알아보자
1) PIVOT 절 요약: “행 데이터를 열로 돌려 세운다”
개념
- 세로로 늘어진 값(행)을 특정 컬럼의 값 기준으로 **가로 열(컬럼)**로 펼칩니다.
- 보통 “집계(합계/개수)”가 같이 들어갑니다.
→ 그래서 피벗은 “요약 보고서 표” 만들 때 많이 씁니다.
기본 형태(이미지 내용)
SELECT ...
FROM (원본 SELECT)
PIVOT (
집계함수(집계대상컬럼)
FOR 피벗기준컬럼 IN (열로 만들 값들...)
);
- FOR : “어떤 컬럼을 열로 펼칠 거냐?”
- IN : “열로 만들 값 목록(직접 적어줘야 함)”
예: JOB이 CLERK, SALESMAN… 이 값들이 열 이름이 됨
예시 1) “부서(DEPTNO)별 직무(JOB) 인원수”
원본 데이터는 보통 이런 형태죠(세로):
- (DEPTNO=10, JOB=CLERK, EMPNO=…)
- (DEPTNO=10, JOB=MANAGER, EMPNO=…)
이걸 피벗하면 “부서가 행, 직무가 열”이 됩니다.
SELECT *
FROM (
SELECT deptno, job, empno
FROM emp
)
PIVOT (
COUNT(empno)
FOR job IN ('CLERK', 'SALESMAN', 'MANAGER', 'ANALYST', 'PRESIDENT')
);
결과 느낌
- DEPTNO | CLERK | SALESMAN | MANAGER | ANALYST | PRESIDENT
- 10 | 1 | 0 | 1 | 0 | 1
- 20 | 2 | 0 | 1 | 2 | 0
- 30 | 1 | 4 | 1 | 0 | 0
한 줄 해석: “10번 부서는 CLERK 1명, MANAGER 1명…”처럼 보고서 표가 됩니다.
예시 2) “집계함수를 여러 개 쓸 수도 있다”
이미지에서 SUM(SAL)과 COUNT(*)를 동시에 넣어서,
부서별/직무별로 급여합+인원수를 한 번에 뽑는 예가 나옵니다.
예시 형태(핵심만):
PIVOT (
SUM(sal) AS sal_sum,
COUNT(*) AS cnt
FOR deptno IN (10 AS dept10, 20 AS dept20)
);
그러면 열이
- DEPT10_SAL_SUM, DEPT10_CNT, DEPT20_SAL_SUM, DEPT20_CNT
처럼 “집계함수별 컬럼”으로 여러 개 만들어집니다.
2) UNPIVOT 절 요약: “열로 펼쳐진 것을 다시 행으로 접는다”
개념
- PIVOT 결과처럼 가로로 넓어진 컬럼들을 다시
- 분석하기 쉬운 세로(long) 형태로 바꿉니다.
기본 형태(이미지 내용)
SELECT ...
FROM (피벗된 테이블 또는 SELECT)
UNPIVOT (
값컬럼 FOR 구분컬럼 IN (접을 컬럼들...)
);
- 값컬럼: 실제 값이 들어갈 컬럼(예: SAL)
- FOR 구분컬럼: “이 값이 원래 어떤 컬럼에서 왔는지” 표시(예: DEPTNO 역할)
- IN: 접을 대상 컬럼 목록(예: DEPT10_ACCOUNTING_SAL, DEPT20_RESEARCH_SAL)
예시) 피벗 테이블을 다시 세로로
피벗 테이블에 이런 컬럼이 있을 때:
- DEPT10_ACCOUNTING_SAL
- DEPT20_RESEARCH_SAL
UNPIVOT을 하면:
- DEPTNO 컬럼에는 “DEPT10_ACCOUNTING_SAL / DEPT20_RESEARCH_SAL” 같은 라벨이 들어가고
- SAL 컬럼에는 실제 급여 값이 들어갑니다.
SELECT job, deptno, sal
FROM emp_pivot
UNPIVOT (
sal FOR deptno IN (dept10_accounting_sal, dept20_research_sal)
)
ORDER BY job, deptno;
결과 느낌
- JOB | DEPTNO | SAL
- CLERK | DEPT10_ACCOUNTING_SAL | 1300
- CLERK | DEPT20_RESEARCH_SAL | 1900
- MANAGER | DEPT10_ACCOUNTING_SAL | 2450
- MANAGER | DEPT20_RESEARCH_SAL | 2975
3) 한 번에 이해하는 비유(엑셀)
- PIVOT: 엑셀 피벗테이블처럼 “요약표(가로로 펼친 표)” 만들기
- UNPIVOT: 그 요약표를 다시 “원본 분석용 세로형 데이터”로 되돌리기
4) 시험/실무 포인트(자주 틀리는 부분)
- PIVOT의 IN 목록은 보통 직접 적는다
(JOB 값이 무엇인지 모르면 결과 열을 만들 수가 없음) - PIVOT은 거의 항상 집계함수(COUNT/SUM/AVG 등)와 함께 쓴다.
- UNPIVOT은 “가로로 많아진 컬럼”을 “행으로 접는 작업”이라서
값 컬럼과 구분 컬럼을 정확히 잡아야 한다.
최종 한 줄 요약
- PIVOT: “행 → 열”로 바꿔서 보고서 표 만들기(집계 포함)
- UNPIVOT: “열 → 행”으로 되돌려 분석하기 좋은 형태로 만들기
f
firststep 에디터 · IT / 자격증 전문 라이터
firststep.kr의 실무 에디터로서 무언가를 처음 도전하는 분들이 헤매지 않도록 검증된 지식과 실습 가이드를 작성합니다.
댓글 0개
댓글을 작성하려면 로그인이 필요합니다
간단한 이메일과 비밀번호로 3초 만에 가입하고 의견을 남겨보세요.
첫 번째 댓글을 남겨보세요!