본문 바로가기

개발 & 코딩/Oracle

오라클 피벗 (Oracle Pivot)

오라클 쿼리를 작성하다보면 행 <-> 열 전환이 필요한 경우가 있습니다.

오라클 11g 이상에서 개발한다면 WM_CONCAT(정렬할 칼렴명)사용하면 간편합니다.

아래 예문은 혹시나 나중에 기억이 안날경우를 대비해 적어놓은거라 참고만 하세요.

빨간색 부분을 참고하시면 됩니다.

SELECT 
    MAX(A.TRAINING_ID) AS TRAINING_ID,
    A.HISTORY_NM, 
    A.OPTION1, A.OPTION2, A.OPTION3, A.OPTION4, A.OPTION5,
    B.SCENARIO_NM, B.SCENARIO_ID,
    REPLACE(WM_CONCAT(D.FAULT_NM),',','@') AS FAULT_NM
 FROM TRAINING_RESULT A
 INNER JOIN SCENARIO B ON A.SCENARIO_ID = B.SCENARIO_ID
 LEFT OUTER JOIN TRAINING_FAULT_INFO C ON A.TRAINING_ID = C.TRAINING_ID
 LEFT OUTER JOIN FAULT D ON C.FAULT_ID = D.FAULT_ID
WHERE A.HISTORY_NM IS NOT NULL
GROUP BY A.HISTORY_NM, A.OPTION1,A.OPTION2,A.OPTION3,A.OPTION4,A.OPTION5, B.SCENARIO_NM, B.SCENARIO_ID
ORDER BY A.HISTORY_NM ASC