SQL Server 22005:唯一列的前 1 *?

SQL Server 22005:唯一列的前 1 *?

我在一张表中有数据(见下文),我需要选择每个用户的最新更新。这里的数据已按日期排序,因此“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

相关内容