日期:2014-05-17 浏览次数:20713 次
use Tempdb
go
--> -->
if not object_id(N'T') is null
drop table T
Go
Create table T([月份] nvarchar(3),[期初总人数] int,[离职总人数] int,[入职总人数] int,[期末总人数] int)
Insert T
select N'一月份',47,6,3,50 union all
select N'二月份',0,1,48,47 union all
select N'三月份',50,0,3,53
Go
declare @s nvarchar(4000),@s2 nvarchar(4000),@s3 nvarchar(4000),@s4 nvarchar(4000)
select
@s=isnull(@s+',','declare ')+'@'+rtrim(Colid)+' nvarchar(4000)',
@s2=isnull(@s2+',','select ')+'@'+rtrim(Colid)+'='''+case when @s2 is not null then 'union all select' else ' select ' end+' [人数统计]='''+quotename(Name,'''')+'''''',
@s3=isnull(@s3,'')+'select @'+rtrim(Colid)+'=@'+rtrim(Colid)+'+'',''+quotename([月份])+''=''+quotename('+quotename(Name)+','''''''') from T ',
@s4=isnull(@s4+'+','')+'@'+rtrim(Colid)
from
syscolumns
where
id=object_id('T') and Name not in('月份')
--print @s+' '+@s2+' '+@s3+' exec('+@s4+')' 显示执行语句
exec(@s+' '+@s2+' '+@s3+' exec('+@s4+')')
/*
人数统计 一月份 二月份 三月份
离职总人数 6 1 0
期初总人数 47 0 50
期末总人数 50 47 53
入职总人数 3 48 3
*/