728x90
글쓴이 : 김홍선


pivot 쿼리란 row의 형태로 주어지는 데이타를 column의 형태로 보여주는 쿼리이다.
예를 들어, 아래와 같이 scott.emp 테이블이 주어졌다고 하면,

EMPNO   ENAME    DEPTNO
-----------------------
7369    SMITH    20
7499    ALLEN    30
7521    WARD     30
7566    JONES    20
7654    MARTIN   30
7698    BLAKE    30
7782    CLARK    10
7788    SCOTT    20
7839    KING     10
7844    TURNER   30
7876    ADAMS    20
7900    JAMES    30
7902    FORD     20
7934    MILLER   10


위 테이블에서, 한 row는 해당 deptno에 속하는 한 명의 사원(employee)을 나타낸다.
이 테이블에서 각 deptno에 속하는 사원의 수를 다음과 같이 출력하고자 한다면,


DEPTNO_10  DEPTNO_20  DEPTNO_30
-------------------------------
3          5          6


쿼리를 아래와 같이 만들어 준다.


SELECT COUNT (DECODE (deptno, 10, 1)) deptno_10,
       COUNT (DECODE (deptno, 20, 1)) deptno_20,
       COUNT (DECODE (deptno, 30, 1)) deptno_30
  FROM emp


pivot 쿼리의 특징 중의 하나는 select 절에 count(decode(...)), sum(decode(...)), max(decode(...)) 등의 함수를 많이 쓴다는 것이다.





예제 추가)

아래와 같이 deptno 별로 clerk, salesman, manager의 수가 나타나도록 쿼리를 만들어보자.
(여기서도 emp 테이블을 사용한다.)



    DEPTNO      CLERK   SALESMAN    MANAGER
---------- ---------- ---------- ----------
        10          1          0          1
        20          2          0          1
        30          1          4          1


쿼리는 아래와 같다.


SELECT   deptno
       , COUNT (DECODE (job, 'CLERK', 1)) clerk
       , COUNT (DECODE (job, 'SALESMAN', 1)) salesman
       , COUNT (DECODE (job, 'MANAGER', 1)) manager
    FROM emp
GROUP BY deptno





위에서 예를 든 것과 같이 row 형태의 데이타를 column 형태로 보여주는 쿼리를 row-to-column pivot 쿼리라고 하고, 그 반대로 column 형태를 row 형태로 보여주는 쿼리를 column-to-row pivot 쿼리라고 하자.


column-to-row pivot 쿼리의 예는 아래 페이지에서 확인할 수 있다.
- http://www.soqool.com/servlet/board?cmd=view&cat=100&subcat=1010&seq=77

'데이터베이스 > SQL Server' 카테고리의 다른 글

퀴즈 문제  (0) 2008.04.29
DateTime ? Char(8) or (10)  (0) 2008.04.29
컬럼명 변경하기  (0) 2008.04.29
Table 변수 vs 임시 테이블 (Ver. 2000)  (0) 2008.04.29
SQL Server 2005의 XQuery 소개  (0) 2008.04.29

+ Recent posts