Skip to content

SQL PIVOT&UNPIVOT #
Find similar titles

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
    기관명     함평성심병원

image

출처: http://blog.jeroenheijmans.nl/2012/12/26/pivot-vs-unpivot/pivot-unpivot/

0.0.1_20140628_0