출처 : http://blog.naver.com/tyboss/70009661021 우리가 많이 알고 있는 pivot 쿼리는 주로 row 형태를 column의 형태로 바꾸는, 굳이 이름을 붙이자면 row-to-column 쿼리이다. 여기에서는 반대로 column-to-row pivot 쿼리를 만들어 본다. 아래 scott.dept 테이블이 있다. 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 이것을 아래 형태로 바꾸는 것이다. 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 쿼리는 아래와 같다. 오라클 버전에 따라 정렬을 다시 해줘야 할 수도 있다. SELECT DECODE (MOD (ROWNUM - 1, 3) + 1, 1, TO_CHAR (deptno), 2, dname, 3, loc) FROM (SELECT 1 FROM DUAL CONNECT BY LEVEL <= 3), dept 위의 결과를 약간 더 응용해 보자. scott.emp 테이블을 아래와 같이 쿼리하면, SELECT ename ename1, empno empno1, job ename2, mgr empno2 FROM emp 결과는 아래와 같다. ENAME1 EMPNO1 ENAME2 EMPNO2 SMITH 7,369 CLERK 7,902 ALLEN 7,499 SALESMAN 7,698 WARD 7,521 SALESMAN 7,698 JONES 7,566 MANAGER 7,839 MARTIN 7,654 SALESMAN 7,698 BLAKE 7,698 MANAGER 7,839 CLARK 7,782 MANAGER 7,839 SCOTT 7,788 ANALYST 7,566 KING 7,839 PRESIDENT TURNER 7,844 SALESMAN 7,698 ADAMS 7,876 CLERK 7,788 JAMES 7,900 CLERK 7,698 FORD 7,902 ANALYST 7,566 MILLER 7,934 CLERK 7,782 이것을 아래와 같이 두개의 컬럼씩 번갈아서 나오도록 해보자. ENAME EMPNO SMITH 7,369 CLERK 7,902 ALLEN 7,499 SALESMAN 7,698 WARD 7,521 SALESMAN 7,698 JONES 7,566 MANAGER 7,839 MARTIN 7,654 SALESMAN 7,698 BLAKE 7,698 MANAGER 7,839 CLARK 7,782 ....... ....... ....... 쿼리는 아래와 같다. SELECT DECODE (MOD (ROWNUM - 1, 2) + 1, 1, ename, 2, job) ename, DECODE (MOD (ROWNUM - 1, 2) + 1, 1, empno, 2, mgr) empno FROM (SELECT 1 FROM DUAL CONNECT BY LEVEL <= 2), emp 나름대로 응용해 본 예제는 아래 페이지에서 찾을 수 있다. http://www.orafaq.com/forum/t/58454/78939/ * 글쓴이 : 김홍선 * 위 내용을 이 곳에서 처음 보신분은 다른 곳에 게재하실 때 반드시 출처를 밝혀주시기 바랍니다. * 위 내용에 관해서 잘못된 부분이 있거나 질문이 있으신 분은 답글로 알려주시기 바랍니다. | ||
|
SYS, SYSTEM 비번을 잃어버렸을때 (0) | 2012.05.31 |
---|---|
오라클 유용한 함수 정리 (0) | 2012.05.31 |
가상 Row 만들기 (0) | 2012.05.31 |
Oracle 중요 힌트 Hint (0) | 2012.05.31 |
오라클 정규식 치환 regexp_replace (0) | 2012.05.31 |