【发布时间】:2017-08-04 10:03:55
【问题描述】:
我需要为每个具有特定“失败”状态的用户查找最新的 3 条记录。起初这似乎很容易,但我似乎无法做到。
所以在一个表中:
ID Date Status
1 2017-01-01 Fail
1 2017-01-02 Fail
1 2017-02-04 Fail
1 2015-03-21 Pass
1 2014-02-19 Fail
1 2016-10-23 Pass
2 2017-01-01 Fail
2 2017-01-02 Pass
2 2017-02-04 Fail
2 2016-10-23 Fail
我希望返回 ID 1,因为最近的 3 条记录失败,但不是 ID 2,因为它们在三个失败中都有通过。每个用户可能有任意数量的通过和失败记录。有成千上万种不同的 ID
到目前为止,我已经尝试使用 ROW_NUMBER() 对尝试进行排序,但想不出一种方法来确保最新的三个结果都具有相同的 Fail 状态。
预期结果
ID Latest Fail Date Count
1 2017-02-04 3
【问题讨论】:
-
向我们展示您的查询尝试!
-
你能添加预期的结果吗
-
@jarlh 查询尝试不起作用,所以显示它没有多大意义 - 我已经做了几次尝试,所以我不只是在寻找一个简单的答案。
-
@Mr.Bhosale 我已编辑问题以包含预期结果
-
@bhs 我在输入表中看不到日期“2017-02-24”?你能重新检查两个 i/o
标签: sql sql-server-2012 common-table-expression