期列转行做表头带星期的和求和的

示例图!


--测试数据
if not object_id(N'Tempdb..#T') is null
	drop table #T
Go
Create table #T([name] nvarchar(22),[date] Date,[value] int)
Insert #T
select N'吉斌','2017-07-01',10 union all
select N'吉斌','2017-07-02',9 union all
select N'吉斌','2017-07-03',4 union all
select N'梁军','2017-07-01',10 union all
select N'梁军','2017-07-02',10 union all
select N'梁军','2017-07-03',17
Go
--测试数据结束
declare @sql varchar(8000)
declare @sql1 varchar(8000)
set @sql='select Name as '+'部门'
set @sql1='select ''总计'''
select @sql=@sql+' , max(case [date] when '''+RTRIM([date])+''' then [value] else 0 end) ['+ RTRIM([date])+DATENAME(dw,[date]) +']'
from (select distinct [date] from #T) as a order by riqi
select @sql1=@sql1+' , sum(['+RTRIM([date])+DATENAME(dw,[date])+'])'
from (select distinct [date] from #T) as a order by riqi
set @sql=@sql+',sum(value) 总计 from #T group by name'
set @sql1=@sql1+',sum(总计) 总计 from ('+@sql+')t'
EXEC(@sql + ' union '+@sql1) 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值