我有一個跟蹤版本歷史的表。我只想獲取最新版本以及表中每個id的日期。 下面將給我每個id,版本組合的最新日期。我如何只選擇最高記錄?我可以將其存儲在臨時表中,然後使用連接來獲取每個id,版本組合的最高記錄。是否有更好的方法可以在單個步驟中完成此操作?當按兩列分組時,獲取最新記錄SQL Server
的樣本數據
id version timestamp
123 1.5 2015-03-28 08:21:04.563
123 1.0 2015-03-21 12:58:24.730
234 1.5 2016-10-15 23:08:09.550
345 1.5 2016-05-10 15:18:09.707
345 1.5 2016-09-02 21:30:00.657
預計輸出
id version timestamp
123 1.5 2015-03-28 08:21:04.563
234 1.5 2016-10-15 23:08:09.550
345 1.5 2016-09-02 21:30:00.657
查詢
select id,version,max(dt_create)
from version_history (nolock)
group by id,version
order by id
我都試過,但我得到了同樣的結果如上
select * from
(
select id,version,dt_create,row_number() over (partition by id,version order by dt_create desc) as a
from version_history (nolock)
) b
where a=1
order by id
Thanks.My表中有2.1億記錄,這是40分鐘以上。使用加入我得到的結果在8分鐘。 –
@inquisitive_mind高興你有一個決議。無法想象爲什麼你得到了40+分鐘,除非你將數據加載到表變量中。 –