テーブルには次のデータがあります (SQL Server 2008R2 を使用しています)。
顧客コード、デバイスの有効期限、デバイス名、ログ ID
S001, NULL, Dvc A, 1
S002, NULL, Dvc B, 2
S002, NULL, Dvc A, 3
S003, 2010-01-01, Dvc A, 4
S004, 2011-06-25, Dvc B, 5
S004, 2012-02-10, Dvc A, 5
ログ ID 列は実行番号に基づいています。
次の基準に基づいて、顧客コードごとに 1 つのレコードを選択したいと考えています。
- デバイス
の有効期限が null でない場合は、最新の日付のレコードを取得します。
したがって、選択されたレコードは次のようになります。
Customer Code, Device Expiry Date, Device Name, Log ID
S001, NULL, Dvc A, 1
S002, NULL, Dvc A, 3
S003, 2010-01-01, Dvc A, 4
S004, 2012-02-10, Dvc A, 5
クエリの出力は、マスター カスタマー コードとさらに結合されます。
Customer Code, Member Type
S001, Silver
S002, Gold
S003, Silver
S004, Silver
S005, Gold
結合すると、最終結果は次のようになります。
Customer Code, Member Type, Device Expiry Date, Device Code
S001, Silver, NULL, Dvc A
S002, Gold, NULL, Dvc A
S003, Silver, 2010-01-01, Dvc A
S004, Silver, 2012-02-10, Dvc A
S005, Gold, NULL, NULL
私が念頭に置いていたのは、Devices レコードを取得するためだけにいくつかのサブクエリを使用することです。上記の結果を得るためのアイデアを手伝ってください。前もって感謝します。