实现类似sys_connect_by_path的功能。请大家帮忙,谢谢!测试数据如下:
create table AUDIT_FORM
(
  FORM_ID        VARCHAR2(32) not null,
  FORM_NAME      VARCHAR2(256),
  PARENT_FORM_ID VARCHAR2(32),
  TYPE_ID        VARCHAR2(32),
  AD_TYPE        VARCHAR2(32)
)insert into AUDIT_FORM (FORM_ID, FORM_NAME, PARENT_FORM_ID, TYPE_ID, AD_TYPE)
values ('001', '供应商表现', '000', 'form', 'score');
insert into AUDIT_FORM (FORM_ID, FORM_NAME, PARENT_FORM_ID, TYPE_ID, AD_TYPE)
values ('002', '交货准确度', '001', 'form', 'score');
insert into AUDIT_FORM (FORM_ID, FORM_NAME, PARENT_FORM_ID, TYPE_ID, AD_TYPE)
values ('003', '交货质量', '001', 'form', 'score');
insert into AUDIT_FORM (FORM_ID, FORM_NAME, PARENT_FORM_ID, TYPE_ID, AD_TYPE)
values ('004', '价钱竞争力', '001', 'form', 'score');
insert into AUDIT_FORM (FORM_ID, FORM_NAME, PARENT_FORM_ID, TYPE_ID, AD_TYPE)
values ('005', '数量准确度', '002', 'form', 'score');
insert into AUDIT_FORM (FORM_ID, FORM_NAME, PARENT_FORM_ID, TYPE_ID, AD_TYPE)
values ('006', '时间准确度', '002', 'form', 'count');
1、使用sys_connect_by_path得出递归树的完整路径。
select sys_connect_by_path(form_id,'/') path,form_id,form_name,parent_form_id from audit_form
start with parent_form_id = '000' 
connect by parent_form_id = prior form_id;
PATH       FORM_ID  FORM_NAME/001          1  供应商表现
/001/002  2  交货准确度
/001/002/005  5  数量准确度
/001/002/006  6  时间准确度
/001/003  3  交货质量
/001/004  4  价钱竞争力2、希望达到的效果如下:PATH       FORM_ID  FORM_NAME1          1  供应商表现
1.1          2  交货准确度
1.1.1          5  数量准确度
1.1.2          6  时间准确度
1.2         3  交货质量
1.3        4  价钱竞争力即:
1)  一个树的同一父节点下的同级子节点,进行组内排序。
2) 上一步的排序结果 + 该节点的父节点的排序结果 。以此类推 ....
3) 得出完整的排序结果(类似路径)