sql server 一段语句求多个和。

如下图,一个是收银员收款流水,一个是汇总。怎么用一条语句,求出每个支付方式的金额之和。例如一条语句求出,李小浓的现金、银行卡、微信、支付宝的金额总和。

1  先按人名和支付方式汇总

2 行列转换

sqlserver行列转换知识

create table A(name varchar(10),sort varchar(30),q int)

insert into A values('A','现金',19)
insert into A values('A','现金',19)
insert into A values('B','现金',19)
insert into A values('C','现金',19)
insert into A values('A','微信',19)
insert into A values('A','银行卡',19)
insert into A values('A','支付宝',19)
go


select * from

select name,sort,sum(q) as qtyall from A 
 group by name,sort 
) as t 
 pivot(sum(qtyall) for sort 
   in([现金],[银行卡],[微信],[支付宝])) 
   t ;
 
   
 go

drop table A

如有疑问,及时沟通!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-05-09
select sum(支付金额)from 表 group by(支付方式)
第2个回答  2021-05-27

SQL Server数据中运算符与表达式

第3个回答  2018-05-09

如果只有固定的几种支付方式,那么我们可已使用静态SQL语句进行汇总统计,否则就要用存储过程编写动态SQL语句了。

下面是静态SQL解决方案:

select 收银员 名字,
sum(case 支付方式 when '现金' then 支付金额 else 0 end) 现金,
sum(case 支付方式 when '银行卡' then 支付金额 else 0 end) 银行卡,
sum(case 支付方式 when '微信' then 支付金额 else 0 end) 微信,
sum(case 支付方式 when '支付宝' then 支付金额 else 0 end) 支付宝 
from 表名 group by 收银员;

相似回答