将行转换为列的查询

时间:2015-04-07 21:43:21

标签: sql sql-server tsql pivot

我有类似

的东西
ZoneNumber  AverageSpeed
      1             20
      2             30
      3             50
      4             60
      5             70

我希望有一个像

这样的观点
AverageSpeed 1  AverageSpeed 2  AverageSpeed 3  AverageSpeed 4  AverageSpeed 5
         20                30              50              60              70    

有没有人知道我的查询需要写什么?

1 个答案:

答案 0 :(得分:1)

您需要使用Pivot

Pivot通过将表达式中一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在最终输出中需要的任何剩余列值上执行聚合。

Basic example

SELECT *
FROM (
    SELECT year(invoiceDate) as [year], left(datename(month,invoicedate),3) as [month], InvoiceAmount as Amount 
    FROM Invoice
) as s
PIVOT
(
    SUM(Amount)
    FOR [month] IN (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec)
)AS pivot