select 部门代码, sum(case when 类别=1 then 1 else 0 end) 类别1人数, sum(case when 类别=2 then 1 else 0 end) 类别2人数, sum(支出1) 支出1合计,sum(支出2) 支出2合计,sum(支出3) 支出3合计 from t1 group by 部门代码
--生成t2表 select into t2 部门代码 ,类别1人数=sum(case 类别 when 1 then 1 else 0 end) ,类别2人数=sum(case 类别 when 2 then 1 else 0 end) ,支出1合计=sum(支出1) ,支出2合计=sum(支出2) ,支出3合计=sum(支出3) from t1 group by 部门代码
--插入t2表 insert into t2 select 部门代码 ,类别1人数=sum(case 类别 when 1 then 1 else 0 end) ,类别2人数=sum(case 类别 when 2 then 1 else 0 end) ,支出1合计=sum(支出1) ,支出2合计=sum(支出2) ,支出3合计=sum(支出3) from t1 group by 部门代码
select 部门代码 ,(select count(人员编号) from t1 where 部门代码 = a.部门代码 and 类别=1 )类别1人数 ,(select count(人员编号) from t1 where 部门代码 = a.部门代码 and 类别=2 )类别2人数 ,sum(支出1) 支出1合计,sum(支出2) 支出2合计,sum(支出3) 支出3合计 from t1 a group by 部门代码
create table #a (部门代码 varchar(10),人员编号 varchar(10),类别 int,支出1 int,支出2 int,支出3 int) insert #a values('005','005001', 1, 20 ,30, 15) insert #a values('006','006021', 2 , 10 , 54 , 15) insert #a values('005','006051', 1 , 20 , 30 , 15) insert #a values('014','014033', 2 , 20 , 14 , 15) insert #a values('005','005001', 1 , 22 , 30 , 15) insert #a values('005','005001', 2 ,20, 30 ,15) select 部门代码 ,(select count(1) from #a where 部门代码 = a.部门代码 and 类别=1 )类别1人数 ,(select count(1) from #a where 部门代码 = a.部门代码 and 类别=2 )类别2人数 ,sum(支出1) 支出1合计,sum(支出2) 支出2合计,sum(支出3) 支出3合计 from #a a group by 部门代码 go drop table #a
update t2 set 类别1人数=tem.类别1人数,类别2人数=tem.类别2人数,支出1合计=tem.支出1合计,支出2合计=tem.支出2合计 ,支出3合计=tem.支出3合计 from (select 部门代码 ,(select count(1) from 你的表 where 部门代码 = a.部门代码 and 类别=1 )类别1人数 ,(select count(1) from 你的表 where 部门代码 = a.部门代码 and 类别=2 )类别2人数 ,sum(支出1) 支出1合计,sum(支出2) 支出2合计,sum(支出3) 支出3合计 from 你的表 a group by 部门代码) tem where tem.部门代码=t2.部门代码
update t2 set 类别1人数=tem.类别1人数,类别2人数=tem.类别2人数,支出1合计=tem.支出1合计,支出2合计=tem.支出2合计 ,支出3合计=tem.支出3合计 from (select 部门代码 ,(select count(1) from 你的表 where 部门代码 = a.部门代码 and 类别=1 )类别1人数 ,(select count(1) from 你的表 where 部门代码 = a.部门代码 and 类别=2 )类别2人数 ,sum(支出1) 支出1合计,sum(支出2) 支出2合计,sum(支出3) 支出3合计 from 你的表 a group by 部门代码) tem where tem.部门代码=t2.部门代码
select into t2 部门代码
,类别1人数=sum(case 类别 when 1 then 1 else 0 end)
,类别2人数=sum(case 类别 when 2 then 1 else 0 end)
,支出1合计=sum(支出1)
,支出2合计=sum(支出2)
,支出3合计=sum(支出3)
from t1 group by 部门代码
insert into t2
select 部门代码
,类别1人数=sum(case 类别 when 1 then 1 else 0 end)
,类别2人数=sum(case 类别 when 2 then 1 else 0 end)
,支出1合计=sum(支出1)
,支出2合计=sum(支出2)
,支出3合计=sum(支出3)
from t1 group by 部门代码
,(select count(人员编号) from t1 where 部门代码 = a.部门代码 and 类别=1 )类别1人数
,(select count(人员编号) from t1 where 部门代码 = a.部门代码 and 类别=2 )类别2人数
,sum(支出1) 支出1合计,sum(支出2) 支出2合计,sum(支出3) 支出3合计
from t1 a
group by 部门代码
insert #a values('005','005001', 1, 20 ,30, 15)
insert #a values('006','006021', 2 , 10 , 54 , 15)
insert #a values('005','006051', 1 , 20 , 30 , 15)
insert #a values('014','014033', 2 , 20 , 14 , 15)
insert #a values('005','005001', 1 , 22 , 30 , 15)
insert #a values('005','005001', 2 ,20, 30 ,15)
select 部门代码
,(select count(1) from #a where 部门代码 = a.部门代码 and 类别=1 )类别1人数
,(select count(1) from #a where 部门代码 = a.部门代码 and 类别=2 )类别2人数
,sum(支出1) 支出1合计,sum(支出2) 支出2合计,sum(支出3) 支出3合计
from #a a
group by 部门代码
go
drop table #a
如果用Update应如何写呢?
,支出3合计=tem.支出3合计 from
(select 部门代码
,(select count(1) from 你的表 where 部门代码 = a.部门代码 and 类别=1 )类别1人数
,(select count(1) from 你的表 where 部门代码 = a.部门代码 and 类别=2 )类别2人数
,sum(支出1) 支出1合计,sum(支出2) 支出2合计,sum(支出3) 支出3合计
from 你的表 a
group by 部门代码) tem where tem.部门代码=t2.部门代码
,支出3合计=tem.支出3合计 from
(select 部门代码
,(select count(1) from 你的表 where 部门代码 = a.部门代码 and 类别=1 )类别1人数
,(select count(1) from 你的表 where 部门代码 = a.部门代码 and 类别=2 )类别2人数
,sum(支出1) 支出1合计,sum(支出2) 支出2合计,sum(支出3) 支出3合计
from 你的表 a
group by 部门代码) tem where tem.部门代码=t2.部门代码