sql - 不带聚合功能的 PIVOT
问题描述
我有一个表,我想将其转为新表。我使用 pivot 来实现,但聚合函数会过滤数据。如何在没有聚合函数的情况下透视表,或者你可以给我这个问题的建议。
原始表
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
解决方案
一个标准的数据透视查询应该在这里工作:
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;
演示
推荐阅读
- java - java中方法的未擦除抛出子句
- javascript - 我无法在 Google 协作平台上使用损坏的链接检查器检查损坏的链接
- python-3.x - python中子进程内部的多处理
- echarts - 如何从 apache eCharts 中的 zRender 点击事件中确定时间轴值
- ios - 关闭后对前一个视图控制器的操作
- powershell - Powershell:HRESULT 异常:0x80131047 与类创建
- flutter - Flutter - 用于空值 _CastError 的空检查运算符
- homebrew - 自制更改前缀
- python - python api sdk脚本从Thycotic文件夹中提取所有分泌物
- javascript - 如何从ajax成功将数据传递给ejs标签?