너무 길게 적으면 더 어려워질꺼 같아서 짧게 말씀드릴께요.
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입니다..
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 ;