SQL:有没有一种方法可以找到一个值是否在另一个值的特定索引范围内



我有两列,大部分是0,少数是1。我想检查如果第一列中出现1,那么第二列中的1是否出现在该索引的5行范围内。例如,假设一个1出现在第1列的第83行,那么如果一个或多个1发生在第2列的第83-88行,我希望返回TRUE,如果不是这样,则返回FALSE。代码块中列出了这方面的示例。我想统计出现TRUE和FALSE的次数。

TRUE:  
0   0
0   0
0   0
1   1
0   0
0   0
0   0
0   0
0   0
0   0
TRUE:  
0   0
0   0
0   0
1   0
0   0
0   0
0   1
0   1
0   0
0   0
FALSE:  
0   0
0   0
0   1
1   0
0   0
0   0
0   0
0   0
0   0
0   1

我不知道从哪里开始,所以我没有任何代码可以开始:(

谨致问候,Kai

假设您有一个排序列,您可以使用窗口函数:

select (case when count(*) = 0 then 'false' else 'true' end)
from (select t.*,
max(col2) over (order by <ordering column>
rows between current row and 4 following
) as max_col2_5
from t
) t
where col1 = 1 and max_col2_5 = 1;

相关内容

最新更新