오랜만에 들어왔네요..
여러방법으로 테스트하고 있는데 도통 풀리지않아 이렇게 글을 올립니다.
읽어보시고 조언을 얻고자 합니다.
미리 감사드리겠습니다.
현재 자료구조 입니다.
idx |
upidx |
title |
1 |
|
111111 |
2 |
1 |
222222 |
3 |
1 |
333333 |
4 |
1 |
444444 |
5 |
2 |
555555 |
6 |
2 |
666666 |
7 |
5 |
777777 |
8 |
5 |
888888 |
9 |
3 |
aaaaaa |
10 |
3 |
bbbbbb |
11 |
9 |
cccccc |
12 |
9 |
dddddd |
13 |
10 |
eeeeee |
14 |
10 |
ffffff |
15 |
13 |
gggggg |
16 |
13 |
hhhhhh |
17 |
14 |
iiiiii |
18 |
14 |
jjjjjj |
WITH t_table AS
(
SELECT 1 idx, NULL upidx, '11111' title FROM dual UNION ALL
SELECT 2, 1, '22222' FROM dual UNION ALL
SELECT 3, 1, '33333' FROM dual UNION ALL
SELECT 4, 1, '44444' FROM dual UNION ALL
SELECT 5, 2, '55555' FROM dual UNION ALL
SELECT 6, 2, '66666' FROM dual UNION ALL
SELECT 7, 5, '77777' FROM dual UNION ALL
SELECT 8, 5, '88888' FROM dual UNION ALL
SELECT 9, 3, 'aaaaaa' FROM dual UNION ALL
SELECT 10, 3, 'bbbbbb' FROM dual UNION ALL
SELECT 11, 9, 'cccccc' FROM dual UNION ALL
SELECT 12, 9, 'dddddd' FROM dual UNION ALL
SELECT 13, 10, 'eeeeee' FROM dual UNION ALL
SELECT 14, 10, 'ffffff' FROM dual UNION ALL
SELECT 15, 13, 'gggggg' FROM dual UNION ALL
SELECT 16, 13, 'hhhhhh' FROM dual UNION ALL
SELECT 17, 14, 'iiiiii' FROM dual UNION ALL
SELECT 18, 14, 'jjjjjj' FROM dual
)
SELECT idx, upidx, title, level, LPAD(' ', (LEVEL-1)*3) || title as aa
FROM t_table
START WITH upidx IS NULL;
위 쿼리문을 날리면 일반 트리형태의 목록이 셀렉트 됩니다.
SELECT idx, upidx
,DECODE(lv, 1, title, NULL) lv1
,DECODE(lv, 2, title, NULL) lv2
,DECODE(lv, 3, title, NULL) lv3
,DECODE(lv, 4, title, NULL) lv4
,DECODE(lv, 5, title, NULL) lv5
,lv
FROM (SELECT idx, upidx
, title
, LEVEL lv
FROM t_table
START WITH upidx is NULL
CONNECT BY PRIOR idx = upidx
)
위 쿼리문을 날리면 아래처럼 결과물이 나옵니다.
idx |
upidx |
lv1 |
lv2 |
lv3 |
lv4 |
lv5 |
lv |
1 |
|
11111 |
|
|
|
|
1 |
2 |
1 |
|
22222 |
|
|
|
2 |
5 |
2 |
|
|
55555 |
|
|
3 |
7 |
5 |
|
|
|
77777 |
|
4 |
8 |
5 |
|
|
|
88888 |
|
4 |
6 |
2 |
|
|
66666 |
|
|
3 |
3 |
1 |
|
33333 |
|
|
|
2 |
9 |
3 |
|
|
aaaaaa |
|
|
3 |
11 |
9 |
|
|
|
cccccc |
|
4 |
12 |
9 |
|
|
|
dddddd |
|
4 |
10 |
3 |
|
|
bbbbbb |
|
|
3 |
13 |
10 |
|
|
|
eeeeee |
|
4 |
15 |
13 |
|
|
|
|
gggggg |
5 |
16 |
13 |
|
|
|
|
hhhhhh |
5 |
14 |
10 |
|
|
|
ffffff |
|
4 |
17 |
14 |
|
|
|
|
iiiiii |
5 |
18 |
14 |
|
|
|
|
jjjjjj |
5 |
4 |
1 |
|
44444 |
|
|
|
2 |
제가 구현하고자 하는 결과물입니다. 우선 idx, upidx는 제외하도록 하겠습니다.
제일 밑단인 lv5 기준으로 상위로 올라갈때 빈공간을 없애고 싶습니다.
가능할지 모르겠네요...답변점 부탁드리겠습니다.
lv1 |
lv2 |
lv3 |
lv4 |
lv5 |
11111 |
22222 |
55555 |
77777 |
|
11111 |
22222 |
55555 |
88888 |
|
11111 |
22222 |
66666 |
|
|
11111 |
33333 |
aaaaaa |
cccccc |
|
11111 |
33333 |
aaaaaa |
dddddd |
|
11111 |
33333 |
bbbbbb |
eeeeee |
gggggg |
11111 |
33333 |
bbbbbb |
eeeeee |
hhhhhh |
11111 |
33333 |
bbbbbb |
ffffff |
iiiiii |
11111 |
33333 |
bbbbbb |
ffffff |
jjjjjj |
11111 |
44444 |
|
|
|
이런식의 자료가 필요한데 가능할지 모르겠네요..
|