Database/Oracle

[Oracle] 테이블 정렬 (PIVOT)

devsalix 2014. 8. 14. 13:34
728x90

테이블 정렬을 하고 싶을때 사용법

 

기존 테이블 형식

순서 DNUM DNAME
1 1 TEST1
2 1 TEST2
3 1 TEST3
4 2 TEST4
5 2 TEST5
6 2 TEST6

1번 사용법

 

WITH 
T(DNUM, DNAME) AS (
       SELECT 1, 'TEST1' FROM DUAL UNION ALL
       SELECT 1, 'TEST2' FROM DUAL UNION ALL
       SELECT 1, 'TEST3' FROM DUAL UNION ALL
       SELECT 2, 'TEST4' FROM DUAL UNION ALL
       SELECT 2, 'TEST5' FROM DUAL UNION ALL
       SELECT 2, 'TEST6' FROM DUAL)
SELECT MAX(DECODE(DNUM, 1, DNAME)) "1",
       MAX(DECODE(DNUM, 2, DNAME)) "2"
FROM (SELECT DNUM, DNAME, ROW_NUMBER() OVER (PARTITION BY DNUM ORDER BY ROWNUM) RN FROM T)
GROUP BY RN
ORDER BY RN

 

순서 1 2
1 TEST1 TEST4
2 TEST2 TEST5
3 TEST3 TEST6

 


2번 사용법

 

WITH 
T(DNUM, SEQ, DNAME) AS (
       SELECT 1, 1, 'TEST1' FROM DUAL UNION ALL
       SELECT 1, 2, 'TEST2' FROM DUAL UNION ALL
       SELECT 1, 3, 'TEST3' FROM DUAL UNION ALL
       SELECT 2, 1, 'TEST4' FROM DUAL UNION ALL
       SELECT 2, 2, 'TEST5' FROM DUAL UNION ALL
       SELECT 2, 3, 'TEST6' FROM DUAL)
SELECT * FROM T
       PIVOT (MIN(DNAME) FOR DNUM IN (1,2))
       ORDER BY SEQ

 

순서 SEQ 1 2
1 1 TEST1 TEST4
2 2 TEST2 TEST5
3 3 TEST3 TEST6

 

 

이렇게 사용 가능 하다

728x90

'Database > Oracle' 카테고리의 다른 글

[Oracle] 원격 서버 접속  (4) 2024.11.09
[Oracle] 다중 SELECT  (0) 2014.08.14
[Oracle] 특수문자 검색  (0) 2014.08.14
[Oracle] SYS_CONNECT_BY_PATH  (0) 2014.08.14