我有一组数据如下所示
TREENAME DATE LEVEL PARENTNODE CHILDNODE
GRN_KK 9/1/2012 1 null ALLACCOUNT
GRN_KK 9/1/2012 2 ALLACCOUNT 52000
GRN_KK 9/1/2012 2 ALLACCOUNT 59900
GRN_KK 9/1/2012 3 52000 54311
GRN_KK 9/1/2012 3 52000 50100
GRN_KK 9/1/2012 3 52000 54345
GRN_KK 9/1/2012 3 52000 54346
GRN_KK 9/1/2012 3 52000 54347
GRN_KK 9/1/2012 4 50100 50151
我需要压缩这些数据如下:
GRN_KK 9/2/2012 ALLACCOUNT 52000
GRN_KK 9/2/2012 ALLACCOUNT 52000 54311
GRN_KK 9/2/2012 ALLACCOUNT 52000 50100
GRN_KK 9/2/2012 ALLACCOUNT 52000 50100 50151
GRN_KK 9/2/2012 ALLACCOUNT 59900
等等。
我最多可以有30个父母子女关系
我使用了连接和sys_connect_by_path
如下
select A.TREE_NAME,A.EfFDT,A.PARENT_NODE_NAME,A.TREE_NODE, sys_connect_by_path(A.TREE_NODE, '/')
FROM PSTREENODE A
WHERE A.TREE_NAME = 'MDA_GRN_KK'
AND A.EFFDT = (
SELECT MAX(A1.EFFDT)
FROM PSTREENODE A1
WHERE A.SETID = A1.SETID
AND A.SETCNTRLVALUE = A1.SETCNTRLVALUE
AND A.TREE_NAME = A1.TREE_NAME
AND A.TREE_NODE_NUM = A1.TREE_NODE_NUM
AND A.TREE_NODE = A1.TREE_NODE
AND A.TREE_BRANCH = A1.TREE_BRANCH
AND A1.EFFDT <= sysdate)
connect by nocycle prior A.TREE_NODE = A.PARENT_NODE_NAME;
结果集太大。此表中还有其他树,我认为它只是查看指定的TREE_NAME
。它潜水我各种组合。
任何人都可以帮助我这个
提前致谢
答案 0 :(得分:0)
如果您想查看树'MDA_GRN_KK'
,那么这就是您的层次结构的“根”。您可以使用START WITH
子句指定根。我通常把它放在CONNECT BY
:
... beginning of your query ...
START WITH A.TREE_Name = 'MDA_GRN_KK'
connect by nocycle prior A.TREE_NODE = A.PARENT_NODE_NAME