我希望您能提供一个按照sequence_within_parent列对层次查询中的子项排序的Oracle SQL查询语句。以下是示例数据集和查询:
此查询返回以下内容:
优先输出如下,其中子元素按正确的顺序排列:
create table tasks (task_id number
,parent_id number
,sequence_within_parent number
,task varchar2(30)
);
insert into tasks values ( 1, NULL, 0, 'Task 1');
insert into tasks values ( 2, 1, 1, 'Task 1.1');
insert into tasks values ( 3, 1, 2, 'Task 1.2');
insert into tasks values ( 4, 2, 2, 'Task 1.1.2');
insert into tasks values ( 5, 3, 1, 'Task 1.2.1');
insert into tasks values ( 6, 2, 1, 'Task 1.1.1');
insert into tasks values ( 7, 3, 4, 'Task 1.2.4');
insert into tasks values ( 8, 3, 2, 'Task 1.2.2');
insert into tasks values ( 9, 3, 3, 'Task 1.2.3');
insert into tasks values (10 , 2, 3, 'Task 1.1.3');
column task format a30
select task_id
,sequence_within_parent
,lpad(' ', 2 * (level - 1), ' ') || task task
from tasks
connect by parent_id = prior task_id
start with task_id = 1
/
此查询返回以下内容:
TASK_ID SEQUENCE_WITHIN_PARENT TASK
---------- ---------------------- ---------------
1 0 Task 1
2 1 Task 1.1
4 2 Task 1.1.2
6 1 Task 1.1.1
10 3 Task 1.1.3
3 2 Task 1.2
5 1 Task 1.2.1
7 4 Task 1.2.4
8 2 Task 1.2.2
9 3 Task 1.2.3
优先输出如下,其中子元素按正确的顺序排列:
TASK_ID SEQUENCE_WITHIN_PARENT TASK
---------- ---------------------- ---------------
1 0 Task 1
2 1 Task 1.1
6 1 Task 1.1.1
4 2 Task 1.1.2
10 3 Task 1.1.3
3 2 Task 1.2
5 1 Task 1.2.1
8 2 Task 1.2.2
9 3 Task 1.2.3
7 4 Task 1.2.4
>=
9i,则无关紧要,但是connect siblings by
当时不存在。 - RichardTheKiwi