表A存放部门人数,现在想统计各个部门及其下级部门的人数select level as alevel,A.depart_code,A.depart_name,A.pnum  
  from A
   start with A.depart_code='d001' connect by prior A.depart_code=A.super_depart_code
查询结果:
1 d001 销售部本部 8
2 d101 销售部分部1 7
2 d102 销售部分部2 5
3 d201 分部管理处 4
3 d202 分部人事办 3现在想实现查询结果向下钻取展示,如:
部门,人数
销售部本部合计,27
   销售部本部,8
   销售部分部1合计,7
     销售部分部1,7
   销售部分部2合计,12
     销售部分部2,5
     分部管理处,4
     分部人事办,3

解决方案 »

  1.   

    SELECT lv || nvl(depart_name, 0), pnum
      FROM (
            
            SELECT a.depart_name, SUM(pnum) pnum, LEVEL lv
              FROM a
             START WITH depart_code = 'd001'
            CONNECT BY PRIOR depart_code = super_depart_code
             GROUP BY ROLLUP(LEVEL, a.depart_name))
     ORDER BY 1再做些修改应该差不多格式了,要把合计 这个名称替换出来 比较麻烦 ,可以建表的