22,209
社区成员
发帖
与我相关
我的任务
分享
create proc test
( @yymm varchar(6)='201208',@emptypename varchar(1000),@emptypetotal varchar(1000))
as
begin
declare @sql varchar(4000)
select @emptypetotal=isnull(@emptypetotal+'+','')+'['+itemname+']' from syssetlist where typeid='rs01'
select @emptypename=isnull(@emptypename+',','')+'['+itemname+']' from syssetlist where typeid='rs01'
set @sql='select [一级部门],[二级部门],[三级部门],[四级部门],'+@emptypename+',('+@emptypetotal+') as [总计] from
(
select
e.partname as [一级部门],d1.partname as [二级部门],d2.partname as [三级部门],
d3.partname as [四级部门],e.emptypename,count(e.emptypename) as empnum,
from
peremployee e left join perdepart d on e.partno=d.partno
left join perdepart d1 on e.partno=d1.dtid2
left join perdepart d2 on e.partno=d2.dtid3
left join perdepart d3 on e.partno=d3.dtid4
where
exists(select * from perempmonthdoc em where em.empid=e.empid and em.yymm='''+@yymm+''')
and (d.dtid2!='' or d.dtid3!='' or d.dtid4!='')
group by e.partname,d1.partname,d2.partname,d3.partname,d4.partname,e.emptypename
) as S PIVOT(sum(empnum) for emptypename in('+@emptypename+')) as D'
exec(@sql)
end