[SQL] 049. ROW를 COLUMN로 출력하기
Updated:
초보자를 위한 SQL 200제 교재를 토대로 공부한 내용입니다.
오라클 SQL을 기반으로 합니다.
실습에 사용한 테이블은 정보문화사 홈페이지에서 받을 수 있습니다.
[예시]
UNPIVOT
으로 행을 열로 출력 가능하다.
내가 이해하기 쉽게 생각하면 기존 열들을 새로운 열의 값으로 정의해 출력한다.
UNPIVOT (값의 열 이름 FOR 열 이름의 열 이름 IN (기존 열 리스트))
형태로 입력한다.
기존 열 이름을 값으로 가지는 새로운 열을 만든다.
기존 열들이 가지는 값을 가지는 새로운 열을 만든다.
우선 다음과 같은 원본 데이터를 확인하자.
-- 기존 데이터 구조 확인
SELECT *
FROM ORDER2;
[결과]
ENAME | BICYCLE | CAMERA | NOTEBOOK |
---|---|---|---|
SMITH | 2 | 3 | 1 |
ALLEN | 1 | 2 | 3 |
KING | 3 | 2 | 2 |
-- UNPIVOT은 기존 열 이름을 특정 열(추가)의 값으로 만드는 것
-- 지금은 기존 테이블에 NULL 값이 없지만 존재시 UNPIVOT하면 해당 행은 제외된다.
-- INCLUDE NULLS: NULL 값인 행도 결과에 포함하여 출력해준다.
SELECT *
FROM ORDER2
UNPIVOT INCLUDE NULLS (건수 FOR 아이템 IN (BICYCLE, CAMERA, NOTEBOOK));
[결과]
기존 열들의 이름을 값으로 가지는 아이템 열이 생성되었다.
기존 열들이 가지는 값을 가지는 건수 열이 생성되었다.
ENAME | 아이템 | 건수 |
---|---|---|
SMITH | BICYCLE | 2 |
SMITH | CAMERA | 3 |
SMITH | NOTEBOOK | 1 |
ALLEN | BICYCLE | 1 |
ALLEN | CAMERA | 2 |
ALLEN | NOTEBOOK | 3 |
KING | BICYCLE | 3 |
KING | CAMERA | 2 |
KING | NOTEBOOK | 2 |
Leave a comment