我只有一张桌子,我想将其转到新桌子上。我使用数据透视实现,但聚合功能将过滤数据。如何在不使用汇总功能的情况下旋转数据表,或者您可以为我提供有关此问题的建议。
原始表
ID Name Value Date
1 A 5.00 06/01/2019 13:00
2 A 13.15 06/02/2019 15:32
3 B 3.20 06/02/2019 15.32
4 B 33.11 05/11/2019 13:00
5 B 32.00 05/11/2019 13:00
转换到新表
ID A B Date
1 5.00 NULL 06/01/2019 13:00
2 13.15 3.20 06/02/2019 15:32
3 NULL 33.11 05/11/2019 13:00
4 Null 32.00 05/11/2019 13:00
注意:ID是两个表上的标识。
我的数据中心代码,它只保留最大值。
PIVOT(
MAX(Value)
FOR Name IN (A,B)) AS S
ORDER BY Date DESC
答案 0 :(得分:2)
标准数据透视查询应在此处运行:
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY Date, Name ORDER BY ID) rn
FROM yourTable
)
SELECT
Date,
MAX(CASE WHEN Name = 'A' THEN [Value] END) AS A,
MAX(CASE WHEN Name = 'B' THEN [Value] END) AS B
FROM cte
GROUP BY
Date, rn;