【问题标题】:How to pivot based on two column如何基于两列进行透视
【发布时间】:2014-09-16 06:47:43
【问题描述】:

我有一张如下表

我的预期输出如下。

SQL Fiddle for this problem

在预期输出中,它需要通过 id 和 date 的组合进行旋转。

我该如何解决这个问题?

【问题讨论】:

    标签: sql sql-server-2012 pivot


    【解决方案1】:

    sql lite 中没有任何PIVOT 函数。您提供的链接指向哪个链接。但你可以这样做:

    SELECT
        yourtable.Id,
        yourtable.Date,
        MAX(CASE WHEN [Type]=1 THEN [Value] ELSE NULL END) AS [1],
        MAX(CASE WHEN [Type]=2 THEN [Value] ELSE NULL END) AS [2],
        MAX(CASE WHEN [Type]=3 THEN [Value] ELSE NULL END) AS [3]
    FROM
        yourtable
    GROUP BY
        yourtable.Id,
        yourtable.Date
    

    如果您想使用枢轴执行此操作并且正在使用 MSSQL 2012。那么您可以这样做:

    SELECT
    *
    FROM
    (
    SELECT
        yourtable.Id,
        yourtable.Date,
        yourtable.Type,
        yourtable.Value
    FROM
        yourtable
    ) AS sourceTable
    PIVOT
    (
        MAX(Value)
        FOR Type IN([1],[2],[3],[4])
    ) AS pvt
    

    这将导致:

    1   2014-04-01 00:00:00.000 23  NULL    NULL    NULL
    2   2014-04-01 00:00:00.000 56  NULL    NULL    NULL
    3   2014-04-01 00:00:00.000 12  78      NULL    NULL
    2   2014-07-01 00:00:00.000 56  NULL    NULL    NULL
    3   2014-07-01 00:00:00.000 12  78      33      NULL
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-06
      • 1970-01-01
      • 2019-07-07
      • 1970-01-01
      • 2015-10-01
      • 2020-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多