求一条SQL语句,用于算计人数

来源:百度知道 编辑:UC知道 时间:2024/06/02 14:11:12
我要计算出行政部、门警队及生产部的人数。当然,这只是一个例子,部门有很多的,而且一个部门最多可分4级。谢谢!
departmentcode departemntname qty
00001 行政部
00001000001 财务部 10
00001000002 电脑部 20
00001000003 门警队
0000100000300001 门警一班 5
0000100000300002 门警二班 5
0000100000300003 门警三班 5
00002 生产部
00002000001 1号车间 50
00002000002 2号车间 50
即是:行政部(一级部门):30人,门警队(二级部门):15人,生产部(一级部门):100人

不能确定您的意思,只能猜测两种情况:
1.您要求出指定部门的人数汇总,这样
SELECT a.departmentcode,a.departemntname,
qty=(select sum(b.qty) from tablename b where b.departmentcode like a.departmentcode+'%')
FROM TABLENAME a WHERE a.departemntname in(行政部,门警队,生产部)
2.求所有未给出人数的(即非最下层部门的人数汇总)
SELECT a.departmentcode,a.departemntname,
qty=(select sum(b.qty) from tablename b where b.departmentcode like a.departmentcode+'%')
FROM TABLENAME a WHERE a.qty=0

select B.depcode,A.departmentname,B.qty
from t A
inner join (
select substring(departmentcode,1,5) as depcode,sum(qty) as qty
from t
where len(departmentcode)=11
group by substring(departmentcode,1,5)
union all
select substring(departmentcode,1,11),sum(qty)
from t
where len(departmentcode)=16
group by substring(departmentcode,1,11)
) B on A.departmentcode=B.depcode
order by depcode

这样即可:
select left(departmentcode,5) a