2017-06-16 48 views
0

我是微軟SQL服務器的新手,並且正在使用現有的數據庫。我需要查詢一張表以獲取客戶列表。每個客戶都有一個CustID和一個HistoryID。某些編輯客戶記錄(桌面應用程序內)導致一個新的行即可寫入表,與歷史ID遞增如:如何在Microsoft SQL Server中跨兩個ID進行查詢?

| CustID | HistoryID | Name  | City | 
| AB1 | 1   | Bob Smith | Bangkok | 
| CD2 | 1   | Joe Bloggs | London | 
| CD2 | 2   | Joe Bloggs | Paris | 
| ZA9 | 1   | Sarah Jones | Berlin | 

我需要得到每個客戶的「最新」的記錄(這是歷史ID最高的那個) - 所以在上面的例子中,我會爲「Bob Smith」,第二行「Joe Bloggs」(而不是第一行)和第二行「Sarah Jones」。

什麼是最好的查詢來做到這一點?由於

+1

可能的重複https://stackoverflow.com/questions/612231/how-can-i-select-rows-with-maxcolumn-value-distinct-by-另一列式-SQL –

回答

1

使用ROW_NUMBER()

select t.* 
from (select t.*, 
      row_number() over (partition by custid order by historyid desc) as seqnum 
     from t 
    ) t 
where seqnum = 1; 
相關問題