안녕하세요.
아래 와 같은 코드가 있습니다.
SELECT 'Z:' PATH FROM DUAL UNION ALL SELECT 'Z:\A팀' FROM DUAL UNION ALL SELECT 'Z:\B팀' FROM DUAL UNION ALL SELECT 'Z:\A팀\001. 팀업무관련' FROM DUAL UNION ALL SELECT 'Z:\A팀\002. 팀운영관련' FROM DUAL UNION ALL SELECT 'Z:\B팀\001. 이미지' FROM DUAL UNION ALL SELECT 'Z:\B팀\002. 검사' FROM DUAL UNION ALL SELECT 'Z:\B팀\003. Scan' FROM DUAL
이것을 메뉴 트리로 표현 하고 싶습니다.
메뉴 트리로 표현시 CODE, PCODE 컬럼을 생성해서 기입을 해야 되는데 기존 자료가 CODE, PCODE가 없습니다.
1.자동으로 CODE를 생성하고 PCODE를 자동으로 구하고 싶습니다.
| CODE | PATH | FULLPATH | PCODE | PPATH |
| 2 | A팀 | Z:\A팀 | 1 | Z: |
2.메뉴트리식으로 표기 하고 싶습니다.
Z:
- A팀
읽어 주셔서 감사합니다.
with t as (
SELECT 'Z:' PATH FROM DUAL
U NION ALL SELECT 'Z:\A팀' FROM DUAL
U NION ALL SELECT 'Z:\B팀' FROM DUAL
U NION ALL SELECT 'Z:\A팀\001. 팀업무관련' FROM DUAL
U NION ALL SELECT 'Z:\A팀\002. 팀운영관련' FROM DUAL
U NION ALL SELECT 'Z:\B팀\001. 이미지' FROM DUAL
U NION ALL SELECT 'Z:\B팀\002. 검사' FROM DUAL
U NION ALL SELECT 'Z:\B팀\003. Scan' FROM DUAL
)
, tt as (
select rownum code, path fullpath, regexp_count(path, '\\') lev, substr(path, instr(path, '\', -1)+1) path, substr(path, 1, instr(path, '\', -1)-1) ppath
from t
)
select code, LPAD('- ',4*(LEVEL-1))||path path, fullpath, (select code from tt where fullpath = t1.ppath) pcode, ppath
from tt t1
start with ppath is null
connect by prior fullpath = ppath
UNION이 안써져서 띄워쓰기했어요
잘 됩니다. 정말 감사합니다.