ORACLE SQL

피벗 쿼리를 작성해보자 (PIVOT TABLE QUERY)

쩨비 2023. 7. 31. 15:56
728x90

피벗 쿼리란 ROW별로 데이터가 나오는것을 특정 컬럼의 ROW값 기준이 되서 ROW가 아닌 컬럼으로 만든다.

 

아래는 ROW에 나오는 특정 값들이 반복해서 나온다고 했을 때 그 값을 ROW 값이 아닌 컬럼으로 표현하는 쿼리이다.

 

SELECT
  *
FROM
    (
        SELECT
            VU.DT_NAME
        ,   WU.UNAME
        ,   VU.USER_NM
        ,   WU.AGR_FILED
        FROM
            WU_TABLE WU
        LEFT OUTER JOIN
            VU_TABLE   VU
        ON  WU.UNAME = VU.USER_ID
        WHERE
            SUBSTR(AGR_NAME, 2, 2) = 'FI'
    )
PIVOT 
    (
        COUNT(*)
        FOR AGR_FILED IN (
            'FIELD01' AS FIELD01,'FIELD02' AS FIELD02,'FIELD03' AS FIELD03,'FIELD04' AS FIELD04
        )
    )
    ORDER BY DT_NAME
    ;

 

PIVOT문에 AGR_FILED 가 컬럼이되어 해당 컬럼이 있는지 없는지 혹은 SUM문을 사용하여 합계 등으로 컬럼이 생성 될 수 있다.