如何基于两列进行透视
Posted
技术标签:
【中文标题】如何基于两列进行透视【英文标题】:How to pivot based on two column 【发布时间】:2014-09-16 06:47:43 【问题描述】:我有一张如下表
我的预期输出如下。
SQL Fiddle for this problem
在预期输出中,它需要通过 id 和 date 的组合进行旋转。
我该如何解决这个问题?
【问题讨论】:
【参考方案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
【讨论】:
以上是关于如何基于两列进行透视的主要内容,如果未能解决你的问题,请参考以下文章