想写个统计的存储过程,在网上找了一个相似的例子,看不懂!!!求帮忙注释下????
Create table emp
(人员 varchar(20), 部门ID varchar(10), 现在部门ID varchar(10))
insert into emp
select '甲 ', 'C ', '02 '
union all select '乙 ', 'C ', '01 '
union all select '丙 ', 'D ', 'D '
union all select '丁 ', 'E ', '01 '
union all select '戊 ', 'D ', '03 '
Create table dept
(部门名称 varchar(20), 部门类型 int, 部门ID varchar(10), 部门父ID varchar(10) )
insert into dept
select '公司1 ',0, 'A ',NULL
union all select '公司2 ',0, 'B ' ,NULL
union all select '部门1 ',1 , 'C ' , 'A '
union all select '部门2 ',1 , 'D ' , 'A '
union all select '部门3 ' ,1 , 'E ' , 'B '
union all select '工程点1 ',2, '01 ' ,NULL
union all select '工程点2 ',2, '02 ' ,NULL
union all select '工程点3 ',2 , '03 ' , NULL
--建立存储过程
--
Create Proc P_sum(@searDept varchar(10),
@Debug int=0)
as
declare @Sqlstr varchar(8000)
Declare @sqlstr1 varchar(8000)
declare @FieldList varchar(2000)
set nocount on
--得到所有的工程编号,并生成一个临时表对象
select @FieldList= ' '
select @FieldList=@FieldList+ ', '+部门名称 + ' int ' from dept where 部门类型=2 order by 部门名称
select @Sqlstr= 'Declare @Dept table (部门名称 varchar(20),基地 int
'+@FieldList+ ',合计 int) '
--print @sqlstr
--构造统计用SQL语句
select @FieldList= ' '
select @FieldList=@FieldList+ '
, '+部门名称+ '=sum(case when b.部门ID <> b.现在部门ID and b.现在部门ID= ' ' '+部门ID+ ' ' ' then 1 else 0 end) '
from dept where 部门类型=2 order by 部门名称---这个不知道什么意思???
--print @FieldList
select @Sqlstr1= '
insert into @dept----这个是什么,@dept没有声明过啊??
select 部门名称=case when a.部门名称 is null then ' '合计 ' ' else a.部门名称 end,
基地=sum(case when b.部门ID=b.现在部门ID then 1 else 0 end) '+@FieldList+ ',合计=0
from (Select 部门ID,部门名称 from dept where 部门父ID= ' ' '+@searDept+ ' ' ') a
left outer join emp b on a.部门ID=b.部门ID
group by a.部门名称
with rollup
'--a.部门名称,b.部门ID a,b是什么表??这个语句是什么意思
select @FieldList= ' '
select @FieldList=@FieldList+ '+ '+部门名称 from dept where 部门类型=2 order by 部门名称
Select @fieldlist= 'update @Dept &