더북(TheBook)
① 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로 연결해 컬럼을 로우로 변환했다. 보기에 따라서 좀 무식한 방법처럼 보일지도 모르지만, 직관적이어서 가독성 측면에서는 나쁘지 않다.

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