我需要选择由number区分的行,这些行是最古老的date。
我看到这篇文章:SQL选择Distinct列和最新日期
但在我的情况下,它不起作用,因为我需要选择所有的列,而不仅仅是子句中使用的2。
所以我得到了这个错误:
它既不包含在聚合函数中,也不包含在分组中。
是否有选择所有列的方法,如果存在具有相同date的行,请将旧行考虑为id较低的行。
样本数据:
id name number date
1 foo 1111 06-11-2022
2 bar 2222 01-12-2022
3 baz 3333 12-30-2022
4 foobar 1111 02-01-2022这是我尝试过的查询:
SELECT id, name, number, MIN(date) as date
FROM my_table
GROUP BY number使用Microsoft
发布于 2022-08-29 16:11:08
使用GROUP BY聚合函数时,只能使用SELECT列表中的聚合列。您可以通过几种方式实现预期的输出,下面是使用窗口聚合函数的一种方法:
select T.*
from (select *,
row_number() over (partition by number order by [date], id) as sn
from my_table
) T
where sn = 1;SQL在这里
https://stackoverflow.com/questions/73531475
复制相似问题