가로로 늘어선 컬럼을 로우로 변환하는 오라클 쿼리이다.


SELECT  CURRENCY_CODE,
        BASE_DATE,
        DECODE(T.NO, 1, 'D7', 2, 'M1', 3, 'M2', 4, 'M3', 5, 'M4', 6, 'M5', 7, 'M6', 8, 'M7', 9, 'M8', 10, 'M9', 11, 'M10', 12, 'M11', 13, 'M12') PERIOD,
        DECODE(T.NO, 1, D7, 2, M1, 3, M2, 4, M3, 5, M4, 6, M5, 7, M6, 8, M7, 9, M8, 10, M9, 11, M10, 12, M11, 13, M12) RATE
FROM    RATE L, (SELECT ROWNUM NO, TO_CHAR(ROWNUM, 'FM00') NO2 FROM USER_OBJECTS WHERE ROWNUM < 14) T
WHERE   T.NO <= 13
ORDER BY CURRENCY_CODE, BASE_DATE, T.NO

T.NO 부분에 조건절은 쿼리로 만들 필드의 수와 맞아야 한다.


참고로 테이블(RATE)의 필드는 다음과 같다.

CURRENCY_CODE

BASE_DATE

D7

M1


M12

         


쿼리를 하면 CURRENCY_CODE, BASE_DATE, PERIOD, RATE를 필드로 가지는 결과물이 쿼리된다.


참고사이트
  1. http://blog.naver.com/PostView.nhn?blogId=mcm27xx&logNo=60157926523


저작자 표시 비영리 변경 금지
신고
Posted by Life 스토리