【发布时间】:2017-04-27 19:29:32
【问题描述】:
我必须编写一个 SQL,其中我必须编写 SQL 来计算 RunID 第一次没有看到。让我用一个例子来解释一下
例如:
RunID | RunDate | ErrorID
----- | ---------- | ---------
101 | 04/11/2017 | 1
101 | 04/11/2017 | 2
101 | 04/11/2017 | 3
102 | 04/22/2017 | 2
102 | 04/22/2017 | 3
103 | 04/26/2017 | 1
104 | 04/27/2017 | 3
105 | 04/28/2017 | 4
在上面的例子中,RunID 101 有错误 1,2,3。 RunID 102 有 2,3。在第二次运行期间找不到 ErrorID 1。所以,RunID 到现在才第一次看到这里是 102 但是在 RunID 103 中再次找到了 ErrorID 1,最后在 RunID 104 中找不到 ErrorID 1。查询应该给出第一次找不到的 RunID,如 104。
我尝试过使用一些窗口函数,例如超前和滞后,但没有帮助。
以下是预期结果:
第一次没有出现 ErrorID 的日期:2
RunID | RunDate | ErrorID
----- | ---------- | ---------
103 | 04/26/2017 | 2
因为在 RunID-102 之后从未见过 ErrorID 2(第一个实例未见过)
第一次没有出现 ErrorID 的日期:1
RunID | RunDate | ErrorID
----- | ---------- | ---------
104 | 04/27/2017 | 1
在 RunID-104 之后从未见过 ErrorID 1
第一次没有出现 ErrorID 的日期:3
RunID | RunDate | ErrorID
----- | ---------- | ---------
105 | 04/28/2017 | 3
在 RunID-105 之后从未见过 ErrorID 3
【问题讨论】:
-
显示预期结果。您的问题不清楚,但预期的结果应该有助于澄清。
-
已编辑帖子,请立即查看
-
但是在运行 102 中第一次没有遇到 error_id 1?..
-
RunID 102 只有 ErrorID 2,3...在此运行中找不到其他 ErrorID 1
-
你到底在用什么数据库?
标签: sql postgresql amazon-redshift