求教一个树形查询+聚合的sql,很难,求高手
表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
------解决方案--------------------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
再做些修改应该差不多格式了,要把合计 这个名称替换出来 比较麻烦 ,可以建表的