sql - 当有 6 个月的间隙时,抓取所有内容,如果没有 6 个月的间隙,则抓取所有 sql

标签 sql sql-server

我正在处理查询拉取,我需要一些帮助。

我试图找出一种情况,当声明有 6 个月的间隙时,然后在没有 6 个月的间隙时获取下一个数字,然后获取所有这些数字。

示例 1:

ID Gap 
1   0
2   4
3   1
4   8
5   1
6   6
7   1

因此,在这个例子中,有一个 8 的间隙,所以如果这是唯一的间隙 >= 6 那么我只会捕获那个间隙,但由于还有另一个 6 的间隙,我只想捕获 ID 7。

示例 2:

ID  Gap 
1   0
2    1
3    0
4    2
5    0

所以在这个例子中,没有间隙。所以我想获取所有这些 ID。

这一切都在sql中

enter image description here

最佳答案

那么,您可以使用窗口函数:

select id, gap
from (select t.*,
             max(case when gap >= 6 then id end) over (order by id) as id_6
      from t
     ) t
where id > id_6 or id_6 is null;

关于sql - 当有 6 个月的间隙时,抓取所有内容,如果没有 6 个月的间隙,则抓取所有 sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55104142/

相关文章:

mysql - 将 sql 查询结果直接转换为图表的 X 轴和 Y 轴的最佳方法是什么

mysql - 其中 ="1234"不等于 where=1234

sql - 查询查找未通过所有给定科目的学生

sql - 检查约束 - 在此上下文中不允许子查询

SQL BCP 无法为标识列插入值

sql-server - 我是否仍应在 SQL Server 查询中使用 With(NoLock)?

sql - 通过 Management Studio 从 SQL Server 2012 导出到 .CSV

sql - SELECT 查询以在一行中打印为 JSON 列表

sql-server - SQL Server "Index Usage Statistics"报告原因 "incorrect syntax near ' )'"

c# - SQL Server - 如何选择每个用户的最新记录?