728x90
오라클 PIVOT(피벗) 함수 사용법 _ 행을 열로 변환하기
개발을 하다보면 세로로 조회된 데이터를 가로로 변환해야하는 상황이 발생한다.
이때 보통 DECODE나 CASE문을 사용하여 변환을 하였을 것이다.
하지만, 오라클 11g 버전에서부터 보다 간단하게 변환을 도와주는 PIVOT 함수 기능을 제공한다.
PIVOT 함수
: 행을 열로 변환하도록 도와주는 기능.
: 간편한 함수사용으로 DECODE 사용할 때 보다는 행열변환이 쉽지만,
함수 사용전에 PIVOT할 컬럼명을 정해놓아야 한다는 주의점이 존재한다 !!
//PIVOT 함수 사용법
SELECT 컬럼
FROM (조회할 데이터 SELECT문) OR 테이블
PIVOT (집계함수(표현식) FOR 피벗대상컬럼 IN (행으로 올릴 열));
PIVOT함수를 사용하면 IN절 안에 있는 값이 컬럼으로 변환이 되고 집계함수 결과가 변환된 컬럼의 값이 된다.
간단한 예제에 적용하여 함수 사용법을 익혀보자 !
샘플 테이블 EMP을 만들어 놓고, 이 테이블을 가지고 PIVOT함수를 사용해 행열 변환을 해보자.
PIVOT을 사용해 JOB의 직군별로 AGE를 SUM한 값을 행->열로 변환.
SELECT *
FROM (SELECT JOB, AGE
FROM EMP)
PIVOT ( SUM(AGE)
FOR JOB IN ('개발', '영업', '인사') );
이렇게 실행하면, 직군별로 AGE가 더해진 값이 열로 변환된 것을 확인해볼 수 있다 !
사용방법만 잘 익힌다면 복잡한 DECODE, CASE문말고 PIVOT사용으로 간단하게 행열변환이 가능할 것 같당 :))
728x90
반응형
'DB > Oracle' 카테고리의 다른 글
[Oracle] LAG, LEAD - 이전 로우, 이후 로우 값 반환 (1) | 2023.07.05 |
---|---|
[Oralce] ORA-01476: divisor is equal to zero - 제수가 0입니다. (1) | 2023.03.29 |
[Oracle] CASE문 - CASE WHEN 표현식 사용법 (0) | 2021.02.19 |
[Oracle] 순위 매기는 함수 RANK(), DENSE_RANK(), ROW_NUMBER() 비교 (0) | 2021.02.18 |
[Oracle] WITH절 사용법 (0) | 2021.02.18 |
댓글