트리구조 형식 만들기 질문드려요. 0 2 1,778

by 권pro [Oracle 기초] [2014.09.23 17:46:11]


너무 길게 적으면 더 어려워질꺼 같아서 짧게 말씀드릴께요.

 

LEVEL1 LEVEL2 LEVEL3 LEVEL4    FULL_LEVEL_NM    VALUE

  A        B         C        D          A / B / C / D        480

  A       B          C        F          A / B / C / F          499

이러한 데이터가 있습니다.

 

현재 이 데이터를

LAST_KEY     UP_KEY   FULL_KEY                         VALUE

    A               0           A

    B               A           A / B

    C               B           A  / B / C

    D               C           A  / B  / C  / D                480

    F                C          A  / B  / C  / F                 499       

이렇게 뽑아내고 싶습니다..

조언좀 부탁드릴께요.

오라클 10G입니다..

by 마농 [2014.09.23 18:42:09]
WITH t AS
(
SELECT 'A' lv1, 'B' lv2, 'C' lv3, 'D' lv4, 'A / B / C / D' nm, 480 v FROM dual
UNION ALL SELECT 'A', 'B', 'C', 'F', 'A / B / C / F', 499 FROM dual
)
SELECT DISTINCT 
       DECODE(lv, 1, lv1, 2, lv2, 3, lv3, 4, lv4) last_key
     , DECODE(lv, 1, '0', 2, lv1, 3, lv2, 4, lv3) up_key
     , REGEXP_SUBSTR(nm, '((^| / )[^/ ]+){'|| lv ||'}') full_key
     , lv
     , DECODE(lv, 4, v) value
  FROM t
     , (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 4)
 ORDER BY full_key
;

 


by 권pro [2014.09.23 20:03:02]

감사합니다^^ 많은 도움이 됐습니다!

좋은 하루 되세요~

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