2017-06-16 5 views
0

私はMicrosoft SQL Serverを初めて使用しており、既存のデータベースを使用しています。私は顧客のリストを取得するためにテーブルを照会する必要があります。各顧客には、CustIDとHistoryIDがあります。 (デスクトップアプリケーション内の)顧客レコードに特定の編集は、新しい行がテーブルに書き込まれますさせ、歴史を持つIDは、例えばインクリメント:Microsoft SQL Serverで2つの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 | 

私は各顧客の「最新」のレコードを(取得する必要があります上記の例では、「Bob Smith」の行を取得し、「Joe Bloggs」の2行目(最初のものではない)と「Sarah Jones」の行を取得します。

これを行うには最適なクエリは何ですか?おかげ

+1

の重複https://stackoverflow.com/questions/612231/how-can-i-select-rows-with-maxcolumn-value-distinct-by- another-column-in-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; 
関連する問題