SQL Server に次のテーブルがあります。
user_id, value, date, action_id
----------------------------------
1 A 1/3/2012 null
1 K 1/4/2012 null
1 B 1/5/2012 null
2 X 1/3/2012 null
2 K 1/4/2012 1
3 K 1/3/2012 null
3 L 1/4/2012 2
3 K 1/5/2012 3
4 K 1/3/2012 null
action_id, state
----------------------------------
1 0
2 1
3 1
4 0
5 1
値が「K」で、アクション ID が null であるか、状態が 1 に設定されている各ユーザーの最新のレコードを返す必要があります。必要な結果セットは次のとおりです。
user_id, value, date, action_id
----------------------------------
3 K 1/5/2012 3
4 K 1/3/2012 null
user_id 1 の場合、最新の値は B で、そのアクション ID は null であるため、これを最新のレコードと見なしますが、値は K ではありません。
user_id 2 の場合、最新の値は K ですが、アクション ID 1 の状態は 0 であるため、X にフォールバックしますが、X は K ではありません。
user_id 3 と 4 は簡単です。
ASP.NET での Linq to SQL クエリに興味がありますが、今のところ T-SQL も問題ありません。