SQL - 选择前n行,其中后n个行值是连续的+ 1
我有一个行ID和Cct号码的表。根据前面的select语句,Cct列可以是+1顺序。SQL - 选择前n行,其中后n个行值是连续的+ 1
我想找到第一行,其中的下一行n 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值是值+1
如果n = 3 I要选择具有ID是10行作为下一个n-1个行由+ 1
希望增加这是明确的
我想我明白了。您正在查找数据中的序列长度,其中序列加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
出现在数据中的第一时间。
这是正确的。我还有一个我没有考虑过的标准。最小cct值只需满足以下'(cct + 2)%3 = 0'。这是可以实现的吗? – user1781272
@ user1781272。 。 。我不明白这是怎么回事,除非你只是想在子查询中添加一个where子句。否则,请提供另一个问题样本数据和问题的解释。 –
@ user1781272我明白你在找什么,我在这里回答了这个问题[链接](http://*.com/questions/37836248/select-first-row-where-next-2-rows-increment-通过-1和 - rowval -2-是-divisibl/38205347#38205347) – MtwStark
我不遵循你想要做的逻辑。 –
这里是什么? – Avi