如果我有一個表具有以下字段查詢返回頂部項目爲每個不同的列值
ID, SomeFK, SomeTime
我將如何編寫一個查詢返回的最新/前3項(基於SomeTime
)每個SomeFK
。
那麼,結果可能看起來像
SomeFK Sometime
0 2012-07-05
0 2012-07-04
0 2012-07-03
1 2012-07-03
1 2012-07-02
1 2012-07-01
2 2012-07-03
2 2012-07-02
2 2012-07-01
....etc....
返回最新的項目特定SomeFK
很容易,但我想不出如何做到這一點的上方。我也覺得它應該是簡單的死!
編輯:
道歉,我錯過了信息的鍵位。這是針對SQL2000的,所以ROW_NUMBER()
不能使用!
請參閱[「基於串聯的解決方案」](http://www.sqlmag.com/content1/topic/optimizing-top-n-per-group-queries/catpath/departments/page/3)部分對於2000年的一種方法。 – 2012-08-15 09:34:37
@MartinSmith你可以在2000年使用CTE嗎? – podiluska 2012-08-15 09:36:15
@podiluska - 不,他們只是2005+。你可以使用派生表。實際上剛剛意識到早期的鏈接不適合,因爲只適用於N = 1。 [2000另一種方法是在這裏](http://archive.msdn.microsoft.com/SQLExamples/Wiki/View.aspx?title=SelectTopNByGroup#SQL2000) – 2012-08-15 09:36:50