首页 > 数据库技术 > 详细

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

时间:2019-12-31 16:17:41      阅读:277      评论:0      收藏:0      [点我收藏+]

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语法进行转换:(语法很复杂,感觉并没有卵用)

技术分享图片

 

未完待续

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!