我有一个包含行ID和Cct编号的表。 Cct列可以是+1顺序,具体取决于前面的select语句。
我想找到下一行cct no的第一行。增量+ 1到n-1。
样品
ID Cct
1 1
2 3
7 5
8 6
10 9
11 10
12 11
如果n = 2我想选择ID为7的行,因为这是第一次下n行cct值为value + 1
如果n = 3我想选择ID为10的行,因为下一个n-1行增加+ 1
希望这很清楚
答案 0 :(得分:2)
我想我明白了。您正在寻找数据中的序列长度,其中序列递增1。
您可以使用row_number()
和减法来识别它们 - 序列的差异是固定的。
所以:
select top 1 min(id), count(*) as length
from (select s.*, (cct - row_number() over (order by id)) as grp
from sample s
) s
group by grp
having count(*) >= @n
order by min(id)
这是第一次在数据中出现长度(至少)@n
的序列。