我在 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,它的action id为null,所以我认为这是最近的记录,但它的值不是K。
对于user_id 2,最近的值是K,但是action id 1的状态是0,所以我回退到X,但是X不是K。
user_id 3 和 4 很简单。
我对 ASP.NET 中的 Linq to SQL 查询感兴趣,但现在 T-SQL 也很好。