안녕하세요..! 이것저것 해도 잘 안되길래 질문하러 왔습니다 ㅜ
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를 뽑아오고싶은데
어떻게 볶아도 잘 안나오네요... 도와주시면 정말 감사드립니다.
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 ;