Hamutaro - Hamtaro 4

Database

[Oracle] PIVOT / UNPIVOT으로 행,열 전환하기

carsumin 2024. 7. 21. 17:22

 

 

PIVOT

 

  • 행 데이터를 열 데이터로 변환
  • 예시 (EMPLOYEE 테이블)
DEPT JOB SALARY
Sales Manager 5000
Sales Clerk 1500
IT Manager 4000
IT Clerk 2000

 

 

위의 데이터를 PIVOT을 사용하여 각 부서별로 JOB을 열로 변환하고 SALARY를 표시해보자.

 

SELECT *
FROM (
    SELECT DEPT, JOB, SALARY
    FROM employee
) 
PIVOT (
    SUM(SALARY) 
    FOR JOB IN ('Manager' AS MANAGER, 'Clerk' AS CLERK)
);

 

  • 결과
DEPT MANAGER CLERK
Sales 5000 1500
IT 4000 2000

 

 

UNPIVOT

 

  • 열 데이터를 행 데이터로 변환
  • 예시 (DEPARTMENT_SALARY)
DEPT MANAGER CLERK
Sales 5000 1500
IT 4000 2000

 

 

위의 PIVOT 된 테이블을 UNPIVOT을 사용하여 원래의 형식으로 되돌릴 수 있다.

 

SELECT DEPT, JOB, SALARY
FROM (
    SELECT DEPT, MANAGER, CLERK
    FROM department_salary
) 
UNPIVOT (
    SALARY FOR JOB IN (MANAGER AS 'Manager', CLERK AS 'Clerk')
);

 

  • 결과
DEPT JOB SALARY
Sales Manager 5000
Sales Clerk 1500
IT Manager 4000
IT Clerk 2000

 

'Database' 카테고리의 다른 글

[데이터베이스] 정규화 과정  (0) 2024.11.03