오라클 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 <-- 이런식으로
반응형
'개발 > 데이터베이스' 카테고리의 다른 글
리눅스에서 PID로 오라클 쿼리문 확인하기 (0) | 2023.07.10 |
---|---|
오라클) 특정 컬럼 중복제거 후 전체컬럼 출력하기 (0) | 2023.06.15 |
SQL 오라클 디벨로퍼 테마 변경 (feat. ozBsidian) (0) | 2023.03.28 |
오라클 DB ) 프로시저로 배열 넘기기 ( IN, FROM 절에 배열 형식으로 사용 - 콤마, 기준으로 구분 ) (0) | 2023.01.13 |
Oracle ) select 절에 if문 사용하기 (Case ~ When) (0) | 2022.08.07 |
댓글