② 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 보다는 훨씬 코드가 줄어 들어 깔끔해 보이고 가독성 역시 우수하다고 할 수 있다.