首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

行列转换后,怎么加下求和列?

2012-12-30 
行列转换后,如何加上求和列?????大版那里不是有专门额外加上求和列的写法吗?[解决办法]OHexec(Nselect a.

行列转换后,如何加上求和列?????

大版那里不是有专门额外加上求和列的写法吗?
[解决办法]
OH


exec(N'select a.*,b.天数 from(select [name]'+@s+N' from #T where [workday] between '''+@dt3+''' and '''+@dt1+''' group by [name])a inner join (select [name],count(*)as 天数 from #T where [status]=''上班'' group by [name])b on a.name=b.name') 
[解决办法]
本帖最后由 josy 于 2012-12-11 21:22:05 编辑

declare @dt1 datetime,@dt2 datetime,@dt3 datetime
set @dt1='2011-11-25'
set @dt2=dateadd(m,-1,@dt1)+1
set @dt3=@dt2

declare @s nvarchar(4000)
set @s=''
while @dt1>=@dt2
Select   @s=@s
+N','+quotename(rtrim(Day(@dt2))+'号')
+N'=max(case when Day([workday])=N'+quotename(Day(@dt2),'''')+N' then [status]  end)',
@dt2=@dt2+1

exec(N'select [name]'+@s+N',SUM(CASE WHEN status=''上班'' THEN 1 ELSE 0 END) AS [总上班天数] from #T where [workday] between '''+@dt3+''' and '''+@dt1+''' group by [name]')

--运行结果
name 26号  27号  28号  29号  30号  31号  1号   2号   3号   4号   5号   6号   7号   8号   9号   10号  11号  12号  13号  14号  15号  16号  17号  18号  19号  20号  21号  22号  23号  24号  25号  总上班天数
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- -----------
李四   NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 上班   请假   NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1
王五   NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 上班   上班   NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 2
张三   NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 上班   上班   NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 2

(3 行受影响)

热点排行
Bad Request.