首页新闻找找看学习计划

如何将子级部门的人统计到父级部门

0
悬赏园豆:10 [已解决问题] 解决于 2017-09-20 15:07

现在表结构是这样的

dept_id 部门id

par_dept_id 父级部门id ,如果是父级则为 -1

n   部门人数

这种情况下我应该怎么统计,我现在需要所有是 - 1 的部门的人,吧所有子级部门的人统计到父级部门下

问题补充:

oracle 层级查询

流年煮雪的主页 流年煮雪 | 菜鸟二级 | 园豆:219
提问于:2017-09-20 14:08
< >
分享
最佳答案
0

网上找到一个供参考:

Id 部门内码,

DeptCode 部门编码,

ParentDeptId 上级部门内码

使用T-SQL:

with Dep as ( select Id,DeptCode,DeptName from Department where Id=1 union all select d.Id,d.DeptCode,d.DeptName from Dep inner join Department d on dep.Id = d.ParentDeptId ) select * from Dep

收获园豆:10
小刺猬001 | 小虾三级 |园豆:656 | 2017-09-20 14:30

我赶紧验证一下

流年煮雪 | 园豆:219 (菜鸟二级) | 2017-09-20 14:36

@流年煮雪: 昂 记得分我点豆

小刺猬001 | 园豆:656 (小虾三级) | 2017-09-20 15:04

@小刺猬001: 我都给你了

流年煮雪 | 园豆:219 (菜鸟二级) | 2017-09-20 15:08

@流年煮雪: yeah~

小刺猬001 | 园豆:656 (小虾三级) | 2017-09-20 15:15

@流年煮雪: 

使用PL/SQL:

select Id,DeptCode,DeptName from Department start with Id = 1 connect by prior Id = ParentDeptId;

start with 表示从哪一行记录开始递归查询,即根节点 connect by 表示进行递归,后面跟递归条件 prior 表示前一条记录,表示上一条记录的Id = 下一条记录的ParentDeptId 比如上面的SQL语句就可以理解为,以Id 为1的记录为根节点,递归查询下一条记录的ParentDeptId = 前一条记录的Id

小刺猬001 | 园豆:656 (小虾三级) | 2017-09-20 15:16
其他回答(2)
0

 这个可以写成存储过程,用递归的方法

jqw2009 | 园豆:1893 (小虾三级) | 2017-09-20 14:15

具体怎么做,求指点

支持(0) 反对(0) 流年煮雪 | 园豆:219 (菜鸟二级) | 2017-09-20 14:16
0

递归,根据父级查询子集。

初学者2号 | 园豆:22 (初学一级) | 2017-09-20 14:20

怎么做?

支持(0) 反对(0) 流年煮雪 | 园豆:219 (菜鸟二级) | 2017-09-20 14:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册