有表原数据如下
id deptname updeptno
1 董事会 0
2 总裁办 1
3 财物部 1
4 市场部 2
5 公关部 2
6 分销处 4
.。。
现要将数据组装成
id deptname updeptno
1 董事会 0
2 总裁办 1,2(董事会/总裁办)
3 财物部 1,3(董事会/财物部)
4 市场部 1,2,4(董事会/总裁办/市场部)
5 公关部 1,2,5(董事会/总裁办/公关部)
6 分销处 1,2,4,6(董事会/总裁办/市场部/分销处)有无新表都可以,就是将updeptno的上级id都找出来,用逗号隔开,问题描述的不是很清楚,望高手给出解题思路或参考资料或源码,不胜感激!!!
id deptname updeptno
1 董事会 0
2 总裁办 1
3 财物部 1
4 市场部 2
5 公关部 2
6 分销处 4
.。。
现要将数据组装成
id deptname updeptno
1 董事会 0
2 总裁办 1,2(董事会/总裁办)
3 财物部 1,3(董事会/财物部)
4 市场部 1,2,4(董事会/总裁办/市场部)
5 公关部 1,2,5(董事会/总裁办/公关部)
6 分销处 1,2,4,6(董事会/总裁办/市场部/分销处)有无新表都可以,就是将updeptno的上级id都找出来,用逗号隔开,问题描述的不是很清楚,望高手给出解题思路或参考资料或源码,不胜感激!!!
(
ID NUMBER(4),
DeptName VARCHAR2(20),
UpDeptNo NUMBER(4)
);INSERT INTO T126 VALUES(1, '董事会', 0);
INSERT INTO T126 VALUES(2, '总裁办', 1);
INSERT INTO T126 VALUES(3, '账务部', 1);
INSERT INTO T126 VALUES(4, '市场部', 2);
INSERT INTO T126 VALUES(5, '公关部', 2);
INSERT INTO T126 VALUES(6, '分销处', 4);CREATE VIEW ViewT126 AS
(SELECT ID,DeptName, s FROM
(SELECT ID, DeptName, UpDeptNo || ', ' || ID AS s
FROM T126
START WITH UpDeptNo = 1
CONNECT BY PRIOR ID = UpDeptNo
ORDER BY ID)
UNION
SELECT ID, DeptName, to_char(UpDeptNo) AS s FROM T126 WHERE ID = 1);
实测结果:
虽然结果出来了,但感觉太复杂了,可以再想想有没有更好的办法。
as updeptno from test
start with id =1
connect by prior id = updeptno
order by id这样试试,貌似可行。。