在时间戳事件列表中查找单个最新项

在记录事件的表格中,通常有一个日期时间字段记录事件发生的时间。查找单个最近的事件可能很困难,因为始终可能记录两个事件,时间戳完全相同。你可以使用 row_number()over(order by …)来确保所有记录都是唯一排名的,并选择前一个(my_ranking = 1)

select *
from (
    select 
        *,
        row_number() over (order by crdate desc) as my_ranking
    from sys.sysobjects
) g
where my_ranking=1

此相同技术可用于从具有可能重复值的任何数据集返回单个行。