PIVOT, UNPIVOT

jiji·2023년 12월 19일
0

DataBase

목록 보기
12/14

데이터를 행과 열 간에 변환하거나 회전하는 SQL 쿼리 연산자입니다.

🔥 PIVOT

행 → 열
행을 특정 기준으로 그룹화 하여 열로 변환한다.

SELECT *
FROM (
    SELECT sales_date, product_name, sales_amount
    FROM sales_table
)
PIVOT (
    SUM(sales_amount)
    FOR sales_date IN ('2023-01-01' AS jan_1, '2023-01-02' AS jan_2, '2023-01-03' AS jan_3)
);

이 쿼리는 '2023-01-01', '2023-01-02', '2023-01-03' 등의 날짜를 열로 변환하고 해당 날짜의 매출 합계를 표시합니다.

🔥 UNPIVOT

열 → 행

  • sales_summary 테이블:
product_namejan_1jan_2jan_3
Product A100150200
Product B120130180
Product C8090110

       ⬇️

SELECT *
FROM (
    SELECT product_name, jan_1, jan_2, jan_3
    FROM sales_summary
)
UNPIVOT (
    sales_amount FOR sales_date IN (jan_1, jan_2, jan_3)
);

       ⬇️

product_namesales_datesales_amount
Product Ajan_1100
Product Ajan_2150
Product Ajan_3200
Product Bjan_1120
Product Bjan_2130
Product Bjan_3180
Product Cjan_180
Product Cjan_290
Product Cjan_3110

이 쿼리는 열로 표시된 날짜 데이터를 행으로 변환하여, 각 제품에 대한 '2023-01-01', '2023-01-02', '2023-01-03'의 매출 데이터를 행으로 표시합니다.

👩‍💻 UNPIVOT - FROM절

SELECT *
FROM (
    SELECT ID, -- 고유 ID
           PARAM_NAME, -- 파라미터 이름
           PARAM_VALUE -- 파라미터 값
    FROM TEMP_TABLE
    UNPIVOT (
        (PARAM_NAME, PARAM_VALUE) FOR PARA IN (
            (PARA_NM_1, PARA_VAL_1),
            (PARA_NM_2, PARA_VAL_2),
            (PARA_NM_3, PARA_VAL_3),
            (PARA_NM_4, PARA_VAL_4),
            (PARA_NM_5, PARA_VAL_5)
        )
    )
);
IDPARAM_NAMEPARAM_VALUE(PARA)
1Apple10PARA_NM_1_VAL_1
1Banana20PARA_NM_2_VAL_2
1Cherry30PARA_NM_3_VAL_3
2Apple15PARA_NM_1_VAL_1
2Banana25PARA_NM_2_VAL_2
2Cherry35PARA_NM_3_VAL_3

0개의 댓글