首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

求教一个树形查询+集合的sql,很难,求高手

2012-10-20 
求教一个树形查询+聚合的sql,很难,求高手表A存放部门人数,现在想统计各个部门及其下级部门的人数select le

求教一个树形查询+聚合的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

再做些修改应该差不多格式了,要把合计 这个名称替换出来 比较麻烦 ,可以建表的

热点排行