oracle 遞歸


可以結合樹,通過節點層次,跟是否是葉子節點配合展示樹。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM