개발/데이터베이스
Oracle 피봇(Pivot) 테이블 사용하기
kakk789
2023. 4. 19. 11:12
오라클 Pivot
- 행, 열 데이터를 서로 전환
- 11g부터 사용가능
- 집계함수를 이용해야함
1. 아래와 같은 테이블 구조가 있다고 가정
2. 동작 설명
1. test_table에서 각각 ft_cd, ft_nm 컬럼을 select
2. PIVOT을 사용하여 쿼리 결과를 행-열 방식으로 변환
3. IN 문 안의 내용이 컬럼명이 됨
4. 동시에 해당 값을 찾아 ROW 값으로 출력 됌.
SELECT
ft_nm_01,
ft_nm_02,
ft_nm_03,
ft_nm_04,
ft_nm_05
FROM
(
SELECT
ft_cd,
ft_nm
FROM
test_table
) a PIVOT (
MAX(ft_nm)
FOR ft_cd
IN (
'1' AS ft_nm_01,
'2' AS ft_nm_02,
'3' AS ft_nm_03,
'4' AS ft_nm_04,
'5' AS ft_nm_05
)
);
3. 결과
Tip
1. 추가로 IN 절에 서브쿼리를 넣는 방식도 존재함
- 단 이럴경우 PIVOT XML 형식을 사용 해야함
- select 시 받는 형식을 XML에서 다른 타입으로 변환 (varchar 등) 해야하므로 나중에 검색하여 알아볼 것
- 참고 URL : https://dejavuhyo.github.io/posts/oracle-pivot/
2. 만약 MAX(집계함수 절)에 Alias 를 줬다면?
- 컬럼명에 해당 alias 명칭이 따라 붙게됌
예시) MAX(ft_nm) as TTT
: 컬럼명
- FT_NM_01_TTT <-- 이런식으로
반응형