【问题标题】:Query which converts rows into columns将行转换为列的查询
【发布时间】:2015-08-10 11:41:41
【问题描述】:

我有类似的东西

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    

有人知道我的查询需要写成什么样子吗?

【问题讨论】:

  • 你用的是sql吗?如果是 mssql,请尝试 PIVOT。
  • 您使用的是哪个数据库系统? MySQL、PostgreSQL、MSSQL、甲骨文,还有别的吗?您查询的目标是什么语言?你想要返回一个对象数组、一个元组数组和一个数组数组还是只是一个巨大的字符串,或者你真的想要一个 sql 行,只有平均速度,20、30、50、60 等?

标签: sql sql-server tsql pivot


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多