oracle递归后合并成一行

需求:组织机构表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

猜你喜欢

转载自liyang678.iteye.com/blog/2360956