当前位置:   article > 正文

Sql Server 行转列函数- Pivot 的使用教程_sql aerverpivot

sql aerverpivot

PIVOT 提供的语法比一系列复杂的 SELECT...CASE 语句中所指定的语法更简单和更具可读性。

以下是带批注的 PIVOT 语法:

  1. SELECT <非透视的列>,
  2. [第一个透视的列] AS <列名称>,
  3. [第二个透视的列] AS <列名称>,
  4. ...
  5. [最后一个透视的列] AS <列名称>,
  6. FROM
  7. (<生成数据的 SELECT 查询>)
  8. AS <源查询的别名>
  9. PIVOT
  10. (
  11. <聚合函数>(<要聚合的列>)
  12. FOR
  13. [<包含要成为列标题的值的列>]
  14. IN ( [第一个透视的列], [第二个透视的列],
  15. ... [最后一个透视的列])
  16. ) AS <透视表的别名>
  17. <可选的 ORDER BY 子句>;

下面举个实例,比如要统计亚马逊9月1号一天每个小时下发的订单量,按照传统的写法如下所示:

  1. select Warehouseid 仓库,
  2. CustomerID 客户,
  3. SUBSTRING(CONVERT(varchar(100),OrderTime,120),0,11) WMS创建时间,
  4. SUBSTRING(CONVERT(varchar(100), ordertime, 120),12,2) 小时,
  5. count(OrderNo) 订单量
  6. from DOC_Order_Header
  7. where
  8. OrderTime>='2018-09-01 00:00:00'
  9. and OrderTime<='2018-09-01 23:59:59'
  10. and CustomerID ='YMX'
  11. and Warehouseid in('HKBT','FLC')
  12. group by Warehouseid,CustomerID,SUBSTRING(CONVERT(varchar(100),OrderTime,120),0,11),
  13. SUBSTRING(CONVERT(varchar(100), ordertime, 120),12,2)
  14. order by 仓库,WMS创建时间

查询出来的结果为列模式,看起来不方便,如下所示:

现在使用 PIVOT 函数,把列转成行,看起来直观明了,语法如下所示:

  1. select *,
  2. [00]+[01]+[02]+[03]+[04]+[05]+[06]+[07]+[08]+[09]+[10]+[11]+
  3. [12]+[13]+[14]+[15]+[16]+[17]+[18]+[19]+[20]+[21]+[22]+[23]+[24] as 当天订单总数
  4. from
  5. (
  6. select Warehouseid 仓库,
  7. CustomerID 客户,
  8. SUBSTRING(CONVERT(varchar(100),OrderTime,120),0,11) WMS创建时间,
  9. SUBSTRING(CONVERT(varchar(100), ordertime, 120),12,2) 小时,OrderNo
  10. from DOC_Order_Header
  11. where
  12. OrderTime>='2018-09-01 00:00:00'
  13. and OrderTime<='2018-09-01 23:59:59'
  14. and CustomerID ='YMX'
  15. and Warehouseid in('HKBT','FLC')
  16. )t
  17. PIVOT
  18. (
  19. count(t.OrderNo) FOR t.小时 IN
  20. ([00],[01],[02],[03],[04],[05],[06],[07],[08],[09],[10],[11],
  21. [12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24])
  22. )as a
  23. order by a.仓库,a.WMS创建时间

查询结果如下图所示:

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/821548
推荐阅读
相关标签
  

闽ICP备14008679号