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