더북(TheBook)
② UNPIVOT

뉴턴의 운동 3법칙은 작용과 반작용 법칙이다. 즉 작용이 있으면 반대로 작용하는 힘이 있는 법이다. 마찬가지로 오라클은 로우를 컬럼으로 변환하는 PIVOT 절을 제공하는데, 반대로 컬럼을 로우로 변환하는 UNPIVOT 절도 제공한다.

입력

    SELECT *
      FROM ch14_score_col_table
      UNPIVOT ( score
                FOR subjects IN ( KOREAN   AS '국어',
                                  ENGLISH  AS '영어',
                                  MATH     AS '수학',
                                  SCIENCE  AS '과학',
                                  GEOLOGY  AS '지리',
                                  GERMAN   AS '독일어'
                                  )
              );

결과

    YEARS GUBUN   SUBJECTS     SCORE
    ------------- ----------- --------
    2014  중간고사  국어          92
    2014  중간고사  영어          87
    2014  중간고사  수학          67
    2014  중간고사  과학          80
    2014  중간고사  지리          93
    2014  중간고사  독일어        82
    2014  기말고사  국어          88
    2014  기말고사  영어          80
    2014  기말고사  수학          93
    2014  기말고사  과학          91
    2014  기말고사  지리          89
    2014  기말고사  독일어        83

UNPIVOT의 사용법은 PIVOT 절과 크게 다르지 않다. 다만 PIVOT 절에서는 집계 함수나 FOR 다음에 실제 테이블 컬럼명이 오고 IN 절에는 컬럼 값이 왔지만, 컬럼을 로우로 변환하는 UNPIVOT 절은 IN 절에 실제 컬럼명이, 나머지는 출력용 가상 컬럼명을 명시한다.

UNPIVOT절 역시 UNION ALL 보다는 훨씬 코드가 줄어 들어 깔끔해 보이고 가독성 역시 우수하다고 할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.