SQL 语句 Return 记录有两个以上的实例并省略最后一个实例
SQL Statement to Return Records with More than Two Instances and Omit the Last Instance
我希望编写一个 SQL 语句,该语句将提取具有两个或更多实例的 EventID,但会忽略这些记录的最后一个实例。这看起来很疯狂,但这样做的目的是查看具有多次更新的事件(更新与 TIME_OF_EVENT 列相关,每次 crew/person 更新事件时,更新的时间得到存储在这里)并查看哪些已在中间过期。我通过比较 TIME_OF_EVENT 和 PREV_ERT.
来查看它们是否在中间过期
select *
from ert_change_log
where time_of_event > '30-SEP-21 23:59:59'
and source <> 'I'
上面的SQL生成下图。这只是 table 的参考,以提供满足此条件的 EventID 示例。
在一个完美的世界中,我需要的查询只会 return EventIDs 210043901 和 210044021 并且会忽略这些 EventID 的最新 TIME_OF_EVENT。
如果这令人困惑,我很乐意提供更多解释或说明!
感谢任何意见。
您可以使用ROW_NUMBER
解析函数:
SELECT *
FROM (
SELECT e.*,
ROW_NUMBER() OVER (PARTITION BY event_id ORDER BY time_of_event DESC) AS rn
FROM ert_change_log e
WHERE time_of_event >= DATE '2021-10-01'
AND source <> 'I'
)
WHERE rn > 1;
我希望编写一个 SQL 语句,该语句将提取具有两个或更多实例的 EventID,但会忽略这些记录的最后一个实例。这看起来很疯狂,但这样做的目的是查看具有多次更新的事件(更新与 TIME_OF_EVENT 列相关,每次 crew/person 更新事件时,更新的时间得到存储在这里)并查看哪些已在中间过期。我通过比较 TIME_OF_EVENT 和 PREV_ERT.
来查看它们是否在中间过期select *
from ert_change_log
where time_of_event > '30-SEP-21 23:59:59'
and source <> 'I'
上面的SQL生成下图。这只是 table 的参考,以提供满足此条件的 EventID 示例。
在一个完美的世界中,我需要的查询只会 return EventIDs 210043901 和 210044021 并且会忽略这些 EventID 的最新 TIME_OF_EVENT。
如果这令人困惑,我很乐意提供更多解释或说明!
感谢任何意见。
您可以使用ROW_NUMBER
解析函数:
SELECT *
FROM (
SELECT e.*,
ROW_NUMBER() OVER (PARTITION BY event_id ORDER BY time_of_event DESC) AS rn
FROM ert_change_log e
WHERE time_of_event >= DATE '2021-10-01'
AND source <> 'I'
)
WHERE rn > 1;