DataBase/SQL

오라클- 크로스 탭(cross tab) 쿼리 흉내내기..

조심이 2009. 9. 1. 18:18
반응형

row에 있는 값을 컬럼 처럼 쓰고자 할때가 있다.
이럴때 cross tab 쿼리를 쓰는데..
row의 수가 동적일때는 못쓰고 값을 알고 있다는 전제가 깔려 있어 유용할지 모르지만 일단 이런 방법도
있구나 알아 두는것도 나쁘지 않다고 생각한다.

예) 쿼리의 결과가 이렇게 나왔다고 치자

 지역  시설물  갯수
 서울시  병원  1
 서울시  공원  2
 부산시  병원  3
 부산시  공원  4

이것을 아래와 같이 바꾸고자 한다면
 지역(갯수)  병원  공원
 서울시  1  2
 부산시  3  4

SELECT 지역,
MAX(DECODE(시설물,'병원',갯수,0)) 병원
MAX(DECODE(시설물,'공원',갯수,0)) 공원

FROM 테이블
GROUP BY 지역  --꼭 그룹으로 묶는다.


반응형