안녕하세요..! 이것저것 해도 잘 안되길래 질문하러 왔습니다 ㅜ
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
;
감사합니다!
PATH로 구분자로 짤라서 사용하면되는거였군요....