β κ΄κ³ν λ°μ΄ν°λ² μ΄μ€ νμμ μ 보λ λ€ λ€μ΄κ° μμ§λ§ ν λμ 보기 μ΄λ ΅λ€. νμ§λ§ λΆμνκΈ° μ½λ€. μ€νλ λ μνΈ νμμ ν λμ 보기 μ½μ§λ§ λΆμνκΈ° μ΄λ ΅λ€. κ·Έλμ μ΄κ²μ μλ‘ μν©μ λ°λΌ νμμ λ°κΏμ£Όλ κ²μ΄ PIVOT(κ΄κ³νμ μ€νλ λ νμμΌλ‘), UNPIVOT(μ€νλ λ νμμ κ΄κ³νμΌλ‘)μ΄λ€.
β PIVOTκ³Ό UNPIVOTμ μ½κ² μ€λͺ νκΈ° μν΄μ ν λ¨μλ‘ μ μ₯λ ν μ΄ν°κ° μλ ν μ΄λΈκ³Ό μ΄ λ¨μκ° μ μ₯λ λ°μ΄ν°κ° μλ ν μ΄λΈμ μμ±νκ² λ€.
-- ν λ¨μλ‘ μ μ₯λ ν
μ΄λΈ μμ±
CREATE TABLE SALES_DATA(
EMPLOYEE_ID NUMBER(6),
WEEK_ID NUMBER(2),
WEEK_DAY VARCHAR2(10),
SALES NUMBER(8,2)
);
-- λ°μ΄ν° μ½μ
INSERT INTO SALES_DATA values(1101, 4, 'SALES_MON', 100);
INSERT INTO SALES_DATA values(1101, 4, 'SALES_TUE', 150);
INSERT INTO SALES_DATA values(1101, 4, 'SALES_WED', 80);
INSERT INTO SALES_DATA values(1101, 4, 'SALES_THU', 60);
INSERT INTO SALES_DATA values(1101, 4, 'SALES_FRI', 120);
INSERT INTO SALES_DATA values(1102, 5, 'SALES_MON', 300);
INSERT INTO SALES_DATA values(1102, 5, 'SALES_TUE', 300);
INSERT INTO SALES_DATA values(1102, 5, 'SALES_WED', 230);
INSERT INTO SALES_DATA values(1102, 5, 'SALES_THU', 120);
INSERT INTO SALES_DATA values(1102, 5, 'SALES_FRI', 150);
COMMIT;
select * from SALES_DATA;
-- μ΄ λ¨μλ‘ μ μ₯λ ν
μ΄λΈ μμ±
CREATE TABLE SALES(
EMPLOYEE_ID NUMBER(6),
WEEK_ID NUMBER(2),
SALES_MON NUMBER(8,2),
SALES_TUE NUMBER(8,2),
SALES_WED NUMBER(8,2),
SALES_THU NUMBER(8,2),
SALES_FRI NUMBER(8,2)
);
-- λ°μ΄ν° μ½μ
INSERT INTO SALES VALUES(1101, 4, 100, 150, 80, 60, 120);
INSERT INTO SALES VALUES(1102, 5, 300, 300, 230, 120, 150);
COMMIT;
-- PIVOT = ν ν
μ΄λΈμ μ΄ ν
μ΄λΈλ‘(κ΄κ³ν ν
μ΄λΈμ λν ν¬λ‘μ€ν ν
μ΄λΈλ‘)
-- SALES_DATA ν
μ΄λΈμ WEEK_DAY 컬λΌμ VALUEλ μμμΌλΆν° κΈμμΌκΉμ§ 컬λΌμΌλ‘ λλ μ§λ€.
-- SALES_DATA ν
μ΄λΈμ SALESλ SUMν¨μλ‘ μΈν΄ κ° μμΌ μ»¬λΌμ VALUEλ‘ ν©νμ¬ λ€μ΄κ°λ€.
SELECT *
FROM SALES_DATA
pivot
(
SUM(SALES)
for WEEK_DAY IN ('SALES_MON' AS SALES_MON,
'SALES_TUE' AS SALES_TUE,
'SALES_WED' AS SALES_WED,
'SALES_THU' AS SALES_THU,
'SALES_FRI' AS SALES_FRI)
)
ORDER BY EMPLOYEE_ID, WEEK_ID;
-- UNPIVOT = μ΄ ν
μ΄λΈμ ν ν
μ΄λΈλ‘(ν¬λ‘μ€ν ν
μ΄λΈμ κ΄κ³ν ν
μ΄λΈλ‘)
-- SALES ν
μ΄λΈμ κ° μμΌ μ»¬λΌμ΄ WEEK_DAY 컬λΌμμ VALUEλ‘ λ€μ΄κ°κ² λλ€.
-- SALES ν
μ΄λΈμ WEEK_DAY μ»¬λΌ μμ λ€μ΄κ° μμΌ λ³ SALESμ κ°μ κ°κ° λλ μ μΆλ ₯νλ€
SELECT EMPLOYEE_ID, WEEK_ID, WEEK_DAY, SALES
FROM SALES
UNPIVOT
(
SALES
FOR WEEK_DAY
IN (SALES_MON, SALES_TUE, SALES_WED, SALES_THU, SALES_FRI)
);
μΈνλ° μ€λΌν΄ λ°μ΄ν°λ² μ΄μ€ κ°μ