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