mssql行转列

create table PayPhoneMoney
  (
      id int identity(1,1),
      userName Nvarchar(20),
      payType nvarchar(20),
      money   decimal,
      payTime datetime,
      constraint pk_id primary key(id)
 )
 --插入测试数据
 insert into PayPhoneMoney values('小李','支付宝',20,'2012-01-03')
 insert into PayPhoneMoney values('小陈','工行',20,'2012-01-06')
 insert into PayPhoneMoney values('小赵','交行',50,'2012-01-06')
 insert into PayPhoneMoney values('小陈','支付宝',60,'2012-01-06')
 insert into PayPhoneMoney values('小赵','工行',30,'2012-01-16')
 insert into PayPhoneMoney values('小张','中行',30,'2012-01-16')
 insert into PayPhoneMoney values('小李','支付宝',60,'2012-01-16')


--分组查询
select paytype from payphonemoney group by paytype
select username,
     sum(case paytype when '支付宝' then money else 0 end) as 支付宝,
     sum(case paytype when '中行' then money else 0 end) as 中行,
     sum(case paytype when '交行' then money else 0 end) as 交行,
     sum(case paytype when '工行' then money else 0 end) as 工行,
     sum(money) as 合计
from payphonemoney
group by username


--拼接字符串
declare @sql varchar(500)
set @sql='select username,'
select @sql=@sql+' sum(case paytype when '''+paytype + ''' then money else 0 end) as '+ paytype +',' from payphonemoney group by paytype
set @sql=@sql + ' sum(money) as 合计'
set @sql=@sql + ' from payphonemoney group by username'
exec(@sql)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值