① UNION ALL을 이용한 방법
컬럼을 로우로 변환하는 가장 일반적인 방법은 다음과 같이 UNION ALL을 사용하는 것이다.
입력
SELECT YEARS, GUBUN, '국어' AS SUBJECT, KOREAN AS SCORE
FROM ch14_score_col_table
UNION ALL
SELECT YEARS, GUBUN, '영어' AS SUBJECT, ENGLISH AS SCORE
FROM ch14_score_col_table
UNION ALL
SELECT YEARS, GUBUN, '수학' AS SUBJECT, MATH AS SCORE
FROM ch14_score_col_table
UNION ALL
SELECT YEARS, GUBUN, '과학' AS SUBJECT, SCIENCE AS SCORE
FROM ch14_score_col_table
UNION ALL
SELECT YEARS, GUBUN, '지리' AS SUBJECT, GEOLOGY AS SCORE
FROM ch14_score_col_table
UNION ALL
SELECT YEARS, GUBUN, '독일어' AS SUBJECT, GERMAN AS SCORE
FROM ch14_score_col_table
ORDER BY 1, 2 DESC;
결과
YEARS GUBUN SUBJECT SCORE
----- -------- ---------- ------
2014 중간고사 독일어 82
2014 중간고사 수학 67
2014 중간고사 지리 93
2014 중간고사 국어 92
2014 중간고사 과학 80
2014 중간고사 영어 87
2014 기말고사 지리 89
2014 기말고사 과학 91
2014 기말고사 독일어 83
2014 기말고사 영어 80
2014 기말고사 국어 88
2014 기말고사 수학 93
각 과목에 해당하는 SELECT문을 하나씩, 총 6개의 SELECT문을 UNION ALL로 연결해 컬럼을 로우로 변환했다. 보기에 따라서 좀 무식한 방법처럼 보일지도 모르지만, 직관적이어서 가독성 측면에서는 나쁘지 않다.