아래와 같은 형식의 데이터가 있습니다.
WITH tmp AS
(
SELECT '대분류1' as codeName, 'A00' as childCode, '000' as upperCode FROM DUAL
UNION ALL SELECT '중분류1', 'A01', 'A00' FROM DUAL
UNION ALL SELECT '소분류1', 'A02', 'A01' FROM DUAL
UNION ALL SELECT '소분류2', 'A03', 'A02' FROM DUAL
UNION ALL SELECT '소분류3', 'A04', 'A03' FROM DUAL
UNION ALL SELECT '소분류4', 'A05', 'A03' FROM DUAL
UNION ALL SELECT '소분류5', 'A06', 'A03' FROM DUAL
UNION ALL SELECT '소분류6', 'A07', 'A03' FROM DUAL
UNION ALL SELECT '중분류2', 'A08', 'A01' FROM DUAL
UNION ALL SELECT '소분류7', 'A09', 'A08' FROM DUAL
UNION ALL SELECT '소분류8', 'A10', 'A09' FROM DUAL
UNION ALL SELECT '소분류9', 'A11', 'A09' FROM DUAL)
SELECT codeName, upperCode, childCode from tmp
start with upperCode = '000'
그런데 전체를 리스트업하는 것이 아니고 특정 소분류 코드만 전달되었을 경우 (예: A04, A05, A10)
소분류가 속해있는 상위 단계까지 SELECT 할려면 어떻게 해야 할까요?
결국 아래와 같은 데이터 구조를 뽑아야 합니다.
대분류 |
중분류 |
소분류 |
대분류1 |
중분류1 |
소분류3 |
|
|
소분류4 |
|
중분류2 |
소분류8 |
|