SQL
PIVOT&UNPIVOT
#
Find similar titles
Structured data
- Category
- Database
PIVOT #
- ORACLE 11g부터 사용 가능한 조건에 의한 행으로 이루어진 값들을 열로 표현하는 기능이다. PIVOT은 식의 한 열에 포함된 여러 고윳값을 출력에서 여러 열로 변환하여 테이블 반환식을 회전하고 최종 출력에서 남은 열값 중 원하는 값에 대해 필요에 따라 데이터를 가져오는 기능이다.
PIVOT 문 예제 #
--기존의 데이터--
SELECT ORGAN_CD , ORGAN_NM
FROM T_KG_ORGAN_MNG
WHERE 1=1
AND ORGAN_NM IN ('제천명지학원','충주중앙병원')
결과 : ORGAN_CD ORGAN_NM
OG17103100944 제천명지학원
OG17103100945 충주중앙병원
-- PIVOT을 사용한 데이터--
SELECT *
FROM ( SELECT ORGAN_CD C ,
ORGAN_NM V
FROM T_KG_ORGAN_MNG
)
PIVOT ( MIN(C) FOR V IN('제천명지학원' 기관번호1,
'충주중앙병원' 기관번호2,
'목포성심병원' 기관번호3));
결과 :
기관번호1 기관번호2 기관번호3
OG17103100944 OG17103100945 OG17103100947
UNPIVOT #
- ORACLE 11g부터 사용 가능한 조건에 의한 열로 이루어진 값들을 행으로 표현하는 기능이다. UNPIVOT은 테이블 반환식의 열을 열값으로 회전하여 PIVOT과 반대되는 연산을 수행하여 데이터를 출력하는 기능이다.
UNPIVOT 문 예제 #
--기존의 데이터--
SELECT ORGAN_CD , ORGAN_NM
FROM T_KG_ORGAN_MNG
WHERE 1=1
AND ORGAN_NM IN ('제천명지학원','충주중앙병원')
결과 : ORGAN_CD ORGAN_NM
OG17103100944 제천명지학원
OG17103100945 충주중앙병원
-- UNPIVOT을 사용한 데이터--
SELECT *
FROM ( SELECT ORGAN_CD C ,
ORGAN_NM V
FROM T_KG_ORGAN_MNG
)
UNPIVOT ( V FOR GR IN (C AS '기관번호',
V AS '기관명') );
결과 : GR V
기관번호 OG17103100944
기관명 제천명지학원
기관번호 OG17103100945
기관명 충주중앙병원
기관번호 OG17103100946
기관명 함평성심병원
출처: http://blog.jeroenheijmans.nl/2012/12/26/pivot-vs-unpivot/pivot-unpivot/