2012-12-03 63 views
0

我有一個選擇,即返回我類似的東西這個結果(我已經簡化了,因爲原來的選擇是相當複雜的):只選擇日期的最後一個值?

| UserFK | aDate    | aValue | 
--------------------------------------------- 
| 1000  | 03.12.2012 10:00 | 123  | 
| 1000  | 03.12.2012 11:00 | 456  | <-- 
| 1001  | 03.12.2012 09:00 | 111  | <-- 
| 1002  | 03.12.2012 09:00 | 222  | 
| 1002  | 03.12.2012 10:00 | 333  | <-- 
| 1003  | 03.12.2012 09:00 | 123  | 
| 1003  | 02.12.2012 09:00 | 123  | 
| 1003  | 03.12.2012 10:00 | 455  | <-- 
| 1004  | 03.12.2012 11:00 | 123  | <-- 

現在我不希望任何重複UserFK,我只想要最後(通過日期)UserFK和它的價值。我標記了我真正想要的。

有一個簡單的辦法做到這一點?

回答

2

您可以使用CTEROW_NUMBER這樣的:

WITH CTE AS 
(
    SELECT UserFK, aDate, aValue, 
    RN = ROW_NUMBER() OVER (PARTITION BY UserFK ORDER BY aDate DESC) 
    FROM dbo.TableName 
) 
SELECT UserFK, aDate, aValue 
FROM CTE 
WHERE RN = 1 
+0

謝謝,這工作。 :) – Feroc

相關問題