with tr1 as (
select 1000 chl_id, 0 par_id, '한국' nm from dual union all
select 1100, 1000, '서울' from dual union all
select 1110, 1100, '강남구' from dual union all
select 1111, 1110, '도곡동' from dual union all
select 1112, 1110, '대치동' from dual union all
select 1120, 1100, '서초구' from dual union all
select 1121, 1110, '양재동' from dual union all
select 1122, 1110, '서초동' from dual union all
select 1200, 1000, '경기' from dual union all
select 1210, 1200, '수원팔달구' from dual union all
select 1211, 1210, '장안동' from dual union all
select 1212, 1210, '수인동' from dual union all
select 1220, 1200, '수원영통구' from dual union all
select 1221, 1220, '영통동' from dual union all
select 1222, 1220, '영도동' from dual union all
select 1230, 1200, '안양만안구' from dual union all
select 1231, 1230, '안양동' from dual union all
select 1232, 1230, '석수동' from dual union all
select 1240, 1200, '안양동안구' from dual union all
select 1241, 1240, '비산동' from dual union all
select 1242, 1240, '관양동' from dual union all
select 2000, 0, '미국' from dual union all
select 2100, 2000, '워싱턴' from dual union all
select 2110, 2100, 'A Street' from dual union all
select 2120, 2100, 'B Street' from dual
),
tr as (
select 1111 as cd, '20100101' as dt, 1000 qty from dual union all
select 1111, '20100102', 1000 from dual union all
select 1112, '20100101', 1001 from dual union all
select 1112, '20100102', 1001 from dual union all
select 1121, '20100101', 1002 from dual union all
select 1121, '20100102', 1002 from dual union all
select 1122, '20100101', 1003 from dual union all
select 1122, '20100102', 1003 from dual union all
select 1211, '20100101', 2000 from dual union all
select 1211, '20100102', 2000 from dual union all
select 1212, '20100101', 2001 from dual union all
select 1212, '20100102', 2001 from dual union all
select 1221, '20100101', 2002 from dual union all
select 1221, '20100102', 2002 from dual
)
select a.chl_id, a.nm, b.dt, b.qty
from tr1 a,
tr b
where a.chl_id = b.cd(+)
connect by prior a.chl_id = a.par_id
결과는 다음과 같이 됩니다.
CHL_ID |
NM |
DT |
QTY |
1000 |
한국 |
|
|
1200 |
경기 |
|
|
1230 |
안양만안구 |
|
|
1232 |
석수동 |
|
|
1231 |
안양동 |
|
|
1210 |
수원팔달구 |
|
|
1211 |
장안동 |
20100101 |
2000 |
1211 |
장안동 |
20100102 |
2000 |
1212 |
수인동 |
20100101 |
2001 |
1212 |
수인동 |
20100102 |
2001 |
1220 |
수원영통구 |
|
|
1221 |
영통동 |
20100101 |
2002 |
1221 |
영통동 |
20100102 |
2002 |
1222 |
영도동 |
|
|
1240 |
안양동안구 |
|
|
1242 |
관양동 |
|
|
1241 |
비산동 |
|
|
1100 |
서울 |
|
|
1120 |
서초구 |
|
|
1110 |
강남구 |
|
|
1111 |
도곡동 |
20100101 |
1000 |
1111 |
도곡동 |
20100102 |
1000 |
1112 |
대치동 |
20100101 |
1001 |
1112 |
대치동 |
20100102 |
1001 |
1121 |
양재동 |
20100101 |
1002 |
1121 |
양재동 |
20100102 |
1002 |
1122 |
서초동 |
20100101 |
1003 |
1122 |
서초동 |
20100102 |
1003 |
2000 |
미국 |
|
|
2100 |
워싱턴 |
|
|
2120 |
B Street |
|
|
2110 |
A Street |
|
|
1200 |
경기 |
|
|
1230 |
안양만안구 |
|
|
1232 |
석수동 |
|
|
1231 |
안양동 |
|
|
1210 |
수원팔달구 |
|
|
1211 |
장안동 |
20100101 |
2000 |
1211 |
장안동 |
20100102 |
2000 |
1212 |
수인동 |
20100101 |
2001 |
1212 |
수인동 |
20100102 |
2001 |
1220 |
수원영통구 |
|
|
1221 |
영통동 |
20100101 |
2002 |
1221 |
영통동 |
20100102 |
2002 |
1222 |
영도동 |
|
|
1240 |
안양동안구 |
|
|
1242 |
관양동 |
|
|
1241 |
비산동 |
|
|
1100 |
서울 |
|
|
1120 |
서초구 |
|
|
1110 |
강남구 |
|
|
1111 |
도곡동 |
20100101 |
1000 |
1111 |
도곡동 |
20100102 |
1000 |
1112 |
대치동 |
20100101 |
1001 |
1112 |
대치동 |
20100102 |
1001 |
1121 |
양재동 |
20100101 |
1002 |
1121 |
양재동 |
20100102 |
1002 |
1122 |
서초동 |
20100101 |
1003 |
1122 |
서초동 |
20100102 |
1003 |
1120 |
서초구 |
|
|
1110 |
강남구 |
|
|
1111 |
도곡동 |
20100101 |
1000 |
1111 |
도곡동 |
20100102 |
1000 |
1112 |
대치동 |
20100101 |
1001 |
1112 |
대치동 |
20100102 |
1001 |
1121 |
양재동 |
20100101 |
1002 |
1121 |
양재동 |
20100102 |
1002 |
1122 |
서초동 |
20100101 |
1003 |
1122 |
서초동 |
20100102 |
1003 |
1111 |
도곡동 |
20100101 |
1000 |
1111 |
도곡동 |
20100102 |
1000 |
1112 |
대치동 |
20100101 |
1001 |
1112 |
대치동 |
20100102 |
1001 |
1121 |
양재동 |
20100101 |
1002 |
1121 |
양재동 |
20100102 |
1002 |
1122 |
서초동 |
20100101 |
1003 |
1122 |
서초동 |
20100102 |
1003 |
1230 |
안양만안구 |
|
|
1232 |
석수동 |
|
|
1231 |
안양동 |
|
|
1210 |
수원팔달구 |
|
|
1211 |
장안동 |
20100101 |
2000 |
1211 |
장안동 |
20100102 |
2000 |
1212 |
수인동 |
20100101 |
2001 |
1212 |
수인동 |
20100102 |
2001 |
1220 |
수원영통구 |
|
|
1221 |
영통동 |
20100101 |
2002 |
1221 |
영통동 |
20100102 |
2002 |
1222 |
영도동 |
|
|
1240 |
안양동안구 |
|
|
1242 |
관양동 |
|
|
1241 |
비산동 |
|
|
1211 |
장안동 |
20100101 |
2000 |
1211 |
장안동 |
20100102 |
2000 |
1212 |
수인동 |
20100101 |
2001 |
1212 |
수인동 |
20100102 |
2001 |
1221 |
영통동 |
20100101 |
2002 |
1221 |
영통동 |
20100102 |
2002 |
1222 |
영도동 |
|
|
1232 |
석수동 |
|
|
1231 |
안양동 |
|
|
1242 |
관양동 |
|
|
1241 |
비산동 |
|
|
2100 |
워싱턴 |
|
|
2120 |
B Street |
|
|
2110 |
A Street |
|
|
2120 |
B Street |
|
|
2110 |
A Street |
|
|
이것은 조직도를 유동적으로 4Level 5 Level (NM1 ~ NM8)등 다양하게 유동적입니다. 하기와 같은 결과를 받고 싶은데... 방법이...
NM1 |
NM2 |
NM3 |
NM4 |
DT |
QTY |
한국 |
경기 |
안양만안구 |
석수동 |
|
|
한국 |
경기 |
안양만안구 |
안양동 |
|
|
한국 |
경기 |
수원팔달구 |
장안동 |
20100101 |
2000 |
한국 |
경기 |
수원팔달구 |
장안동 |
20100102 |
2000 |
한국 |
경기 |
수원팔달구 |
수인동 |
20100101 |
2001 |
한국 |
경기 |
수원팔달구 |
수인동 |
20100102 |
2001 |
… |
… |
… |
.. |
.. |
.. |
어떻게 하면될지 아이디어가 영...
사용환경은 Oracle 8.X 대입니다.
|