START WITH... CONNECT BY 를 사용안하고 레벨 및 정렬을 할 수 있을까요? 0 4 837

by 동동동 [SQL Query] [2018.08.30 10:04:26]


안녕하세요..

WITH TMP AS (
SELECT 'A'  COD, '가나다' CODNM, 'A' GRPCOD, 2 SEQ FROM DUAL UNION ALL
SELECT 'A2' COD, '가다'   CODNM, 'A' GRPCOD, 4 SEQ FROM DUAL UNION ALL
SELECT 'B'  COD, '하하하' CODNM, ''  GRPCOD, 3 SEQ FROM DUAL UNION ALL
SELECT 'C'  COD, 'qkqqqq' CODNM, ''  GRPCOD, 5 SEQ FROM DUAL UNION ALL
SELECT 'A1' COD, '나다'   CODNM, 'A' GRPCOD, 1 SEQ FROM DUAL 
)
SELECT * FROM TMP;

 

COD CODNM GRPCOD SEQ
A 가나다 A 2
A2 가다 A 4
B 하하하   3
C qkqqqq   5
A1 나다 A 1

다음과 같이 데이타가 있을때

GRPCOD 별로 그룹을 지어서 SEQ별로 정렬을 할때, COD와 GRPCOD가 같은경우는 같은 그룹에서도 최상위로 표시가 되어야 합니다.

 

COD CODNM GRPCOD SEQ LVL
A 가나다 A 2 0
A1 나다 A 1 1
A2 가다 A 4 2
B 하하하 {NULL} 3 0
C qkqqqq {NULL} 5 0

 

이렇게 레벨과 sort가 가능할지 문의 드립니다..

 

도움부탁드립니다..

 

 

by 우리집아찌 [2018.08.30 10:19:04]

레벨은 3까지만 인가요?


by 동동동 [2018.08.30 10:30:56]

아니요..정해진 depth 은 없습니다.


by 마농 [2018.08.30 10:30:14]
SELECT cod, codnm, grpcod, seq
     , ROW_NUMBER() OVER(PARTITION BY NVL(grpcod, cod)
                         ORDER BY DECODE(grpcod, cod, 0, seq)) - 1 lvl
  FROM tmp
;

 


by 동동동 [2018.08.31 15:27:21]

답변 감사드립니다..

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