在時間戳事件列表中查詢單個最新項

在記錄事件的表格中,通常有一個日期時間欄位記錄事件發生的時間。查詢單個最近的事件可能很困難,因為始終可能記錄兩個事件,時間戳完全相同。你可以使用 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

此相同技術可用於從具有可能重複值的任何資料集返回單個行。