특정 조건에 의한 order by 질문 0 4 1,754

by DISTINCT [SQL Query] order by [2017.03.29 14:40:29]


WITH T AS (SELECT 'AA' COL1 , 'DD' COL2, '1' COL3 , '' COL4 FROM DUAL UNION ALL
           SELECT 'AA' COL1 , 'II' COL2, '1' COL3 , '' COL4 FROM DUAL UNION ALL
           SELECT 'BB' COL1 , 'SS' COL2, '2' COL3 , '' COL4 FROM DUAL UNION ALL
           SELECT 'BB' COL1 , 'TT' COL2, '2' COL3 , '' COL4 FROM DUAL UNION ALL
           SELECT 'CC' COL1 , 'II' COL2, '3' COL3 , 'DD' COL4 FROM DUAL UNION ALL
           SELECT 'CC' COL1 , 'NN' COL2, '3' COL3 , '' COL4 FROM DUAL
        )
        SELECT * FROM T
        ORDER BY COL3,COL2 

AA DD 1  
AA II 1  
BB SS 2  
BB TT 2  
CC II 3 DD
CC NN 3  

위와 같은 정렬을

AA DD 1  
CC II 3 DD
AA II 1  
BB SS 2  
BB TT 2  
CC NN 3  

이렇게 정렬 하고 싶습니다. 쉬울듯 하면서 잘 안풀려요....

by 마농 [2017.03.29 14:53:23]

설명이 없네요.


by DISTINCT [2017.03.29 14:59:40]

아..죄송합니다. 2번째 결과과 나온걸 설명 드리자면 COL4의 값중 'DD' 라는 값을 가진 행하나를 맨위에 AA 밑으로 순서를 바꿔준건데 이유는 'AA'라는 데이타가 COL2의 DD를 가지고 있기 때문입니다.


by 마농 [2017.03.29 15:14:03]
SELECT *
  FROM t
 START WITH col4 IS NULL
 CONNECT BY PRIOR col2 = col4
 ORDER SIBLINGS BY col3, col2
;

 


by chrome [2017.03.29 15:17:35]

WITH T AS (SELECT 'AA' COL1 , 'DD' COL2, '1' COL3 , '' COL4 FROM DUAL UNION ALL
           SELECT 'AA' COL1 , 'II' COL2, '1' COL3 , '' COL4 FROM DUAL UNION ALL
           SELECT 'BB' COL1 , 'SS' COL2, '2' COL3 , '' COL4 FROM DUAL UNION ALL
           SELECT 'BB' COL1 , 'TT' COL2, '2' COL3 , '' COL4 FROM DUAL UNION ALL
           SELECT 'CC' COL1 , 'II' COL2, '3' COL3 , 'DD' COL4 FROM DUAL UNION ALL
           SELECT 'CC' COL1 , 'NN' COL2, '3' COL3 , '' COL4 FROM DUAL
        )
        SELECT * FROM T
        CONNECT BY PRIOR COL2 =  COL4 
        START WITH COL4 IS NULL
        order siblings by  col3,col2        
;

계층 처리하는것으로 나오긴 합니다. 

댓글이 글이 왜 안올라갈까요 ㅜ,.ㅜ 

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입