계층형 구조에서 null값에 max값 넣기 질문 0 2 3,712

by 꼬막 [Oracle 기초] Oracle 오라클 [2023.02.05 15:44:16]


 

안녕하세요..! 이것저것 해도 잘 안되길래 질문하러 왔습니다 ㅜ

 

connect by구를 사용하여 현재 계층형 쿼리를 사용하여 결과값이 아래와 같습니다.  

 

> 현재 결과값 

ITEM_CODE PARENT_ITEM_CODE ITEM_NAME LEVEL LEAF SYS_PATH_NAME ITEM_NAME_LV1 ITEM_NAME_LV2 ITEM_NAME_LV3 ITEM_NAME_LV4
01 null 대분류제목 1 0

대분류제목

대분류제목 null null null
02 01 중분류제목 2 0 대분류제목 > 중분류제목 null 중분류제목 null null
03 02 소분류제목 3 0 대분류제목 > 중분류제목 > 소분류제목 null null 소분류제목 null
04 03 제목1 4 1 대분류제목 > 중분류제목 > 소분류제목 > 제목1 null null null 제목1
05 03 제목2 4 1 대분류제목 > 중분류제목 > 소분류제목 > 제목2 null null null 제목2

 

위의 그림과같이 데이터를 뽑았는데요.. 

LEAF가 1인 결과인 2개의 row만 가져오면서, ITEM_NAME_LV1~LV3 까지의 컬럼은 decode(level,1,ITEM_NAME) 이런식으로 뽑아왔습니다..

해당 컬럼의 null값을 MAX 혹은 MIN을 가져와서 앞서말한 2개 row를 뽑아오고싶은데 

어떻게 볶아도 잘 안나오네요... 도와주시면 정말 감사드립니다.

 

by 마농 [2023.02.06 08:42:47]
SELECT item_code
     , parent_item_code
     , item_name
     , LEVEL lv
     , CONNECT_BY_ISLEAF leaf
     , SUBSTR(SYS_CONNECT_BY_PATH(item_name, ' > '), 4) sys_path_name
--   , CONNECT_BY_ROOT(item_name) item_name_lv1
     , REGEXP_SUBSTR(SYS_CONNECT_BY_PATH(item_name, '>'), '[^>]+', 1, 1) item_name_lv1
     , REGEXP_SUBSTR(SYS_CONNECT_BY_PATH(item_name, '>'), '[^>]+', 1, 2) item_name_lv2
     , REGEXP_SUBSTR(SYS_CONNECT_BY_PATH(item_name, '>'), '[^>]+', 1, 3) item_name_lv3
     , REGEXP_SUBSTR(SYS_CONNECT_BY_PATH(item_name, '>'), '[^>]+', 1, 4) item_name_lv4
  FROM t
 START WITH parent_item_code IS NULL
 CONNECT BY PRIOR item_code = parent_item_code
;

 


by 꼬막 [2023.02.06 10:39:27]

감사합니다! 

PATH로 구분자로 짤라서 사용하면되는거였군요....

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