DB

[ORACLE] PIVOT 함수 사용법

SH.DevBlog 2023. 10. 22. 11:53
728x90

PIVOT을 이용하려면 집계함수를 이용해야한다. 집계함수가 아닌 해당 값을 가져와야 하는 경우는 아래처럼 MAX 함수를 이용하면 된다. 또한 Alias를 활용하여 VO객체의 필드부분과 변수명을 통일시켜 매핑을 동적으로 할당해줄 수 있다.

   SELECT *
     FROM (
           SELECT A.PLANT_CD
                 ,A.LINE_CD
                 ,A.PROC_CD
                 ,A.DEVICE_CD
                 ,A.ITEM_CD
                 ,A.PD_BARCODE
                 ,A.PROD_WORK_DT
                 ,A.PROD_WORK_RESULT
                 ,A.PROD_WORK_VALUE
                 ,A.REG_ID
                 ,B.INSP_RESULT
             FROM QM.PROD_QUALITY_HI A

             LEFT OUTER JOIN QM.FINAL_INSP_HI B
               ON B.PLANT_CD = A.PLANT_CD
              AND B.LINE_CD = A.LINE_CD
              AND B.ITEM_BARCODE = A.PD_BARCODE
              AND B.FINAL_INSP_DT = A.PROD_WORK_DT
             
             WHERE 1=1
             <if test ="itemCd != null and itemCd != ''">
             AND ITEM_CD = #{itemCd}
             </if>
             <if test ="useFlg != null and useFlg != ''">
             AND USE_FLG = #{useFlg} 
             </if>
          )
    PIVOT (
          MAX(PROD_WORK_RESULT)
          
          FOR DEVICE_CD IN ('1' AS  VAL01
                           ,'2' AS  VAL02
                           ,'3' AS  VAL03
                           ,'4' AS  VAL04
                           ,'5' AS  VAL05 
                           )
          )
728x90