我正在寻找解决方案如何使用sys_connect_by_path仅选择完整的层次结构'分支'。我在互联网上找到了这样的例子,但结果显示它没有我感兴趣的第二个查询。以下示例。有谁知道我怎么能实现第二种形式的输出 - 完全层次结构跳过较短的输出?
SQL>
SQL> column full_path format a40
SQL>
SQL> select ename
2 , connect_by_root ename as Designer
3 , sys_connect_by_path(ename,' > ') as full_path
4 from emp
5 start with job = 'Designer'
6 connect by prior empno = mgr;
ENAME DESIGNER FULL_PATH
-------- -------- ----------------------------------------
Jane Jane > Jane
Smart Jane > Jane > Smart
Ana Jane > Jane > Smart > Ana
Fake Jane > Jane > Fake
Tom Jane > Jane > Fake > Tom
Black Black > Black
Jack Black > Black > Jack
Wil Black > Black > Wil
Mary Black > Black > Mary
Take Black > Black > Take
Jane Black > Black > Jane
Chris Chris > Chris
Mike Chris > Chris > Mike
Peter Peter > Peter
Jane Peter > Peter > Jane
Smart Peter > Peter > Jane > Smart
Ana Peter > Peter > Jane > Smart > Ana
Fake Peter > Peter > Jane > Fake
Tom Peter > Peter > Jane > Fake > Tom
ENAME DESIGNER FULL_PATH
-------- -------- ----------------------------------------
Black Peter > Peter > Black
Jack Peter > Peter > Black > Jack
Wil Peter > Peter > Black > Wil
Mary Peter > Peter > Black > Mary
Take Peter > Peter > Black > Take
Jane Peter > Peter > Black > Jane
Chris Peter > Peter > Chris
Mike Peter > Peter > Chris > Mike
答案 0 :(得分:3)
使用CONNECT_BY_ISLEAF
pseudocolumn仅过滤层次结构树叶子上的那些行:
select ename
, connect_by_root ename as Designer
, sys_connect_by_path(ename,' > ') as full_path
from emp
WHERE CONNECT_BY_ISLEAF = 1
start with job = 'Designer'
connect by prior empno = mgr;