给定如下数据表:
一个 | b | 丙 | d | 埃 |
---|---|---|---|---|
1 | 测试 | 9 | 时长 | 2024-10-22 08:00:00.000 |
1 | 测试 | 9 | 升 | 2024-10-23 08:00:00.000 |
1 | 测试 | 9 | 问 | 2024-10-22 08:00:00.000 |
我想按 a、b、c 列对数据进行分组,并显示 d 列中具有最新日期的值(e 列)。
因此,我希望得到一行这样的数据:
一个 | b | 丙 | d |
---|---|---|---|
1 | 测试 | 9 | 升 |
我本来希望有像下面这样简单的东西,例如“last()”,但据我所知,没有这么简单的东西?
SELECT
a, b, c,
last(d)
FROM
dbo.items
GROUP BY
a, b, c
我能找到的唯一接近我想要的例子是LAST_VALUE OVER PARTITION
它在 group by 中不起作用
LAST_VALUE(d) OVER (PARTITION BY d ORDER BY e) AS d
我知道类似的事情也可以访问不在分组依据中的内容,比如如果 b 想要在分组依据中,我仍然可以访问STRING_AGG
所有的值,像这样
STRING_AGG(b, ',') AS b
并得到“test,test,test”作为值