我在一张表中有数据(见下文),我需要选择每个用户的最新更新。这里的数据已按日期排序,因此“SomeData”列包含每个用户的最新唯一值。Top 1 SomeData 不起作用,因为它只会返回一个用户。仅使用 SQL 是否可行?
Date SomeData User ...
8/5/2010 2.2 UserC
4/5/2010 1.1 UserA
3/5/2010 9.4 UserB
1/5/2010 3.7 UserA
1/5/2010 6.1 UserB
答案1
一个快速的破解 - 类似这样的事情应该有效,假设你的源表名是'd',你可以使用 row_number() 对结果进行排序,然后查询派生表:
select *
from
(
select Date, Data, [User], row_number() over(partition by [User] order by [Date] desc) rownumber
from d
) x
where rownumber = 1