首页 > 解决方案 > 如何过滤sql server中的记录?

问题描述

我在 sql server 中有一个名为“Status”的表,如下所示。

在此处输入图像描述

如何过滤相同级别和相同状态的时间戳小于 5 分钟的记录?

例如:对于上述记录,我的输出应该是

在此处输入图像描述

标签: sqlsql-server

解决方案


使用lag()

select s.*
from (select s.*, lag(date) over (partition by level, status order by date) as prev_date
      from status s
     ) s
where prev_date is null or
      prev_date > dateadd(minute, -5, date);

推荐阅读