반응형

oracle 에서 피벗 테이블 사용하는 방법.

우선 당연한 이야기지만, mysql 사용법과는 다르다.

mysql에서 피벗테이블 생성하는 방법보다 코드가 길어지거나 유연성이 없어보인다.

 

아래 쿼리를 예시로 보면, PIVOT절 안에 해당 컬럼명을 명시해줘야 된다.
(무조건적인것은 아니나, 아래 내용을 보면 이렇게 짤수밖에 없는 이유가 있다.)

with data as (
select '스타벅스' cafe,  '서울' location from dual union all
select '스타벅스' cafe,  '서울' location from dual union all
select '빽다방' cafe,  '서울' location  from dual union all
select '이디야' cafe,  '서울' location from dual union all
select '빽다방' cafe,  '인천' location from dual union all
select '스타벅스' cafe,  '경기도' location from dual union all
select '스타벅스' cafe,  '인천' location  from dual
)
select * from data
PIVOT (
  COUNT(*)
  FOR cafe IN ('스타벅스','이디야','빽다방')
);

 

mysql 에서는 동적 표출할 컬럼명을 group_concat으로 만들었으나, oracle은 정적으로 표출할 컬럼명을 지정하였다.

 

이유는 아래와 같다.

mysql 에서는 GROUP_CONCAT으로 컬럼명을 만들면 됐다.

oracle 에서는 LISTAGG 로 컬럼명을 만들면 된다.

 

각각 제한 사이즈가 있다.

mysql은 쉽게 제한 사이즈를 변경이 가능하나, oracle은 12version 이후에 사이즈 변경이 가능하다고 나와있다.

 

레가시 프로젝트를 진행하다보면 oracle의 경우에는 유료이기 때문에 구매를 하면 version update가 불가능하기때문에 
각 버전에 맞춰서 쿼리를 작성해야되는 경우가 발생한다....

 

 

mysql 피벗 테이블 방법

https://wwwnghks.tistory.com/114

 

반응형

+ Recent posts