可以結合樹,通過節點層次,跟是否是葉子節點配合展示樹。
LEVEL:查詢節點層次,從1開始。 CONNECT_BY_ISLEAF:查詢節點是否是葉子節點,是則為1,不是則為0 SELECT ID, NAME, PARENT_ID, LEVEL, CONNECT_BY_ISLEAF FROM SC_DISTRICT START WITH NAME='巴中市' CONNECT BY PRIOR ID=PARENT_ID ORDER BY ID; 查詢結果: ID NAME PARENT_ID LEVEL CONNECT_BY_ISLEAF 2 巴中市 1 1 0 4 巴州區 2 2 1 5 通江縣 2 2 1 6 平昌縣 2 2 0 13 大寨鄉 6 3 1 14 響灘鎮 6 3 1 15 龍崗鎮 6 3 1 16 白衣鎮 6 3 1
遞歸拼接字符串
select sys_connect_by_path(ename,'>') tree from emp start with ename='King' connect by prior empno = mgr;
需求:組織機構表t_uic_dept, dept_level = 2為公司,dept_level='5'為部門。
現在要查出所有部門以及對應的公司一行展示。
展示列為:部門Code,部門名稱,公司Code,公司名稱。
SQL為:
with a as
(select t.dept_code, t.dept_name, t.dept_level, t.dept_parentcode
from caissa_erp_uic.T_UIC_DEPT t
where t.dept_level = '5'),
b as
(select d.dept_code,
d.dept_name,
d.dept_level,
sys_connect_by_path(d.dept_code, '/') treepath
from caissa_erp_uic.T_UIC_DEPT d
where d.dept_level = '2'
CONNECT BY NOCYCLE PRIOR d.dept_parentcode = d.dept_code
start with d.dept_code in (select a.dept_code from a))
select a.dept_code,
a.dept_name,
-- a.dept_level,
b.dept_code,
b.dept_name
-- b.dept_level
from a, b
where instr(b.treepath, a.dept_code) > 0