SqlServer笔记-pivot实现数据转换(行转列)

pivot帮助我们实现行转列,pivot出现之前只能通过下列sql实现行转列

转置sql1:查询多次表,性能差

select 
PaymentType 支付类型
,count(*) 订单数
,sum(RealUSDPayTotalPrice) 总支付金额
,(select count(*) from order_master inOrder where outOrder.PaymentType=inOrder.PaymentType and OrderMasterState=2) 已支付订单
,(select count(*) from order_master inOrder where outOrder.PaymentType=inOrder.PaymentType and OrderMasterState!=2) 未支付订单
 from order_master outOrder
group by PaymentType;

转置sql2:使用case when,只查询一次,比上面速度快的多

select 
PaymentType 支付类型
,count(*) 订单数
,sum(RealUSDPayTotalPrice) 总支付金额
,SUM(case when OrderMasterState=2 then 1 else 0 end) 已支付订单
,SUM(case when OrderMasterState!=2 then 1 else 0 end) 未支付订单
 from order_master outOrder
group by PaymentType;

使用pivot语法进行转换:(语法很复杂,感觉并没有卵用)

未完待续

原文地址:https://www.cnblogs.com/fanfan-90/p/12124943.html