상위코드 찾아내기 0 2 2,544

by 냥냥펀치원투 [PL/SQL] 트리 재귀 상위코드 ORACLE11G [2022.08.31 11:59:58]


안녕하세요.

아래 와 같은 코드가 있습니다.

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팀

 

읽어 주셔서 감사합니다.

by 고등어한다라이5천원 [2022.09.01 14:30:51]

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이 안써져서 띄워쓰기했어요 


by 냥냥펀치원투 [2022.09.02 20:02:59]

잘 됩니다.  정말 감사합니다.

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