【问题标题】:How can I group A horizontal Results set into a vertical one like below:如何将水平结果集分组为垂直结果集,如下所示:
【发布时间】:2014-03-07 12:18:58
【问题描述】:
Select * from Machines Where DayOfWeight = '2013-10-31'

返回

MachineId   TotalValue  DayOfWeigh
1           290.70      2013-10-31
2           647.20      2013-10-31 
3           2178.56     2013-10-31

我怎样才能让它返回:

DayOfWeigh  1       2       3
2013-10-31  290.70  647.20  2178.56

这看起来很简单,但我找不到正确的分组语句或支点?

【问题讨论】:

    标签: sql sql-server group-by sql-server-2012 pivot


    【解决方案1】:
    select *
    from machines
    pivot (sum(TotalValue) for MachineID in ([1],[2],[3])) p
    

    http://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx

    【讨论】:

    • 这会返回正确的列标题:Dayofweigh, 1,2,3 但是返回了 3 行,每行有 2 个空值。
    【解决方案2】:

    这解决了它

    SELECT *
    FROM (
        SELECT 
            DayOfWeigh ,MachineId, TotalValue
        FROM MachineTotals
    ) as s
    PIVOT
    (
        SUM(TotalValue)
        FOR MachineId IN ([1], [2], [3)
    )AS p
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-30
      • 1970-01-01
      • 1970-01-01
      • 2017-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      相关资源
      最近更新 更多