2015-11-02 45 views
-4

發現了一些最新的記錄SQL Server查詢我有一個這樣的表..從每個ID

ID  City 
----------------- 
1  Jakarta 
1  Bogor 
2  Bandung 
2  Surabaya 
3  Solo 
3  Null 

我想查詢將返回:

ID  City 
--------------- 
1  Bogor 
2  Surabaya 
3  Null 

任何想法?我需要你們的幫助。我用了一些方法,如rankdistinctmax ..但結果不是我所期待..

+0

您需要一些其他方式來確定哪條記錄是最新的。數據中沒有任何內容表明這一點如果您有像'DateAdded'這樣的列,那麼您可以確定哪條記錄是最新的。 – Tanner

+0

如果你嘗試了某些東西,你總是應該發佈你使用的代碼(或選擇)所嘗試的。否則,對於很多人來說,你只希望我們做你的工作,即使事實並非如此,你確實有問題。在你的情況下,我會把選擇使用和什麼不是你得到的預期結果是 – Thomas

+0

@Pradhitya檢查我的答案,這是你需要什麼? –

回答

0

您可以使用CTEROW_NUMBER -function:

WITH CTE AS 
(
    SELECT Id, City, Rn = ROW_NUMBER() OVER (Partition By ID 
              Order by Id DESC) 
    FROM dbo.Cities 
) 
SELECT Id, City 
FROM CTE 
WHERE RN = 1 

儘管我不知道你想用哪一列來確定「最新」記錄。在Order by Id DESC中使用。

+0

這不適用於ID相同。 – Tanner

+0

@Tanner:它的工作方式是每個ID只有一行,但不能以每個組返回最新記錄的方式工作,因爲OP沒有顯示該列。我在我的回答中提到過它。 –

+0

同意,代碼工作正常,但它不會保證所需的輸出,如你所說。我在編輯進入之前評論過。無論如何,這是一個很糟糕的問題。 – Tanner