-------100分求这样的SQL语句(不够再给)------
zeren表TableA结构如下:
bzeren(char) szeren(c) depart(c) name(c) lb(c) kh_jj(float) khlb(c)
大责任一 A小责任一 depa 姓名一 非劳务工 1200 月奖金
大责任一 A小责任一 depa 姓名一 非劳务工 4800 月工资
大责任一 A小责任一 depb 姓名二 劳务工 600 月工资
大责任一 A小责任二 depc 姓名三 非劳务工 1400 月工资
大责任二 B小责任一 depe 姓名四 劳务工 200 月工资
.....
大责任N N小责任n depn 姓名n 劳务工 700 额外奖励
-----------------------------------
现在想提取数据形成以下格式的表TableB(用来做报表)
-----------------------------------
bzren szeren 部门 总人数 非劳人数 劳人数 非劳收入 劳务工收入
大责任一 A小责任一 depa
大责任一 A小责任n depb
..
大责任N N小责任n depc
------------------------------------
其中TableB的bzeren、szeren、bdepart是用要求唯一的.即用下语句可以形成这三列
select bzeren,szeren,bdepart from zeren
group by bzeren,szeren,bdepart
order by bzeren,szeren,bdepart
但是还要对TableB的后五列对应统计数据更新TableB
请问如何写这条SQL或存储过程?
------解决方案--------------------select bzeren,szeren,bdepart,Count(distinct name) as 总人数,
sum(case when lb=N '非劳务工 ' then 1 end) as 非劳人数,
sum(case when lb=N '劳务工 ' then 1 end) as 劳人数,
sum(case when lb=N '非劳务工 ' then kh_jj end) as 非劳收入,
sum(case when lb=N '劳务工 ' then kh_jj end) as 劳务工收入
from zeren
group by bzeren,szeren,bdepart
order by bzeren,szeren,bdepart
------解决方案--------------------查询楼上正解,若要更新不如用楼上一起插入 insert tableB select ...
------解决方案--------------------update xxx set 非劳务工 '=b.非劳人数
from xxx a inner join (
select bzeren,szeren,bdepart,Count(distinct name) as 总人数,
sum(case when lb=N '非劳务工 ' then 1 end) as 非劳人数,
sum(case when lb=N '劳务工 ' then 1 end) as 劳人数,
sum(case when lb=N '非劳务工 ' then kh_jj end) as 非劳收入,
sum(case when lb=N '劳务工 ' then kh_jj end) as 劳务工收入
from zeren
group by bzeren,szeren,bdepart )b
on a.bzeren=b.bzerenand a.szeren=b.szerenand a.bdepart=b.bdepart