Database/SQL

[Oracle] 행열 변환, 오라클 PIVOT 테이블 사용 방법

헹창 2021. 1. 13.
반응형

[Oracle] 행열 변환, 오라클 PIVOT 테이블 사용 방법

 

 

PIVOT 테이블은 행/열을 바꾸거나 통계처리할 때 대체로 사용된다.

 

 

사용 구문

 

SELECT ...
  FROM ...
 PIVOT [XML] (      	 --------------(1)
 	PIVOT_CLAUSE     --------------(2)
 	PIVOT_FOR_CLAUSE --------------(3)
 	PIVOT_IN_CLAUSE  --------------(4)
 )           
 WHERE ...

 

PIVOT : PIVOT 테이블, [XML]을 정의할 경우 필터링된 PIVOT 값이 XML 타입으로 반환된다.

PIVOT_CLAUSE : 집계함수 (SUM, MAX, MIN, COUNT 등)와 같은 컬럼을 정의한다.

PIVOT_FOR_CLAUSE : PIVOT의 기준이 되는 컬럼을 정의한다.

PIVOT_IN_CLAUSE : PIVOT_FOR_CLUASE 에서 정의한 컬럼의 필터링 값을 정의한다.

 

 

 

 

사용 예제

 

 

테이블명이 TEST_TABLE이 다음과 같은 데이터를 갖고 있다.

 

 

 

해당 테이블의 데이터를 가지고 학년별 남녀 명 수의 통계를 다음과 같이 뽑으려고 한다.

 

  1학년 2학년 3학년
여자 - 명 - 명 - 명
남자 - 명 - 명 - 명

 

 

- PIVOT 쿼리

 

SELECT * FROM TEST_TABLE
PIVOT (
	COUNT(NAME) AS CNT
	FOR GRADE IN (
		'1학년', '2학년', '3학년'	
	)
)    

 

- 결과

 

 

 

만약 집계 데이터의 ALIAS를 주지 않으면 위와 같이 '필터링 값' + '기준컬럼명' 이 표출된다.

 

 

PIVOT을 응용해서 더 다양한 구조의 데이터를 조회할 수 있다.

 

하지만 여기서 IN 문에 들어가는 필터링 값이 동적이라는 것이 가장 큰 단점이다.

 

 

다음에는 서브쿼리 혹은 동적으로 PIVOT 테이블의 필터링 값을 정의 할 수 있는 PIVOT XML 을 알아보도록 하자.

 

 

 

728x90
반응형

댓글

추천 글