J'ai une table qui a un numéro de séquence.
Je veux trouver le numéro de séquence manquant qui est au minimum parmi les nombres manquants.
For eg., Seq No: 1,2,3,5,7,9 ==> Expected result: 4 Seq No: 1,2,3,4,5,6,7,9,15 ==> Expected result: 8
3 Réponses :
Vous pouvez essayer avec row_number()
with cte as ( select seq,seq-row_number() over(order by seq) as diff from tablename ) select * from cte where diff<>0 and diff in (select min(diff) from cte where diff<>0)
utilisez row_number () pour générer une nouvelle séquence et la comparer avec votre seq d'origine
select min(new_seq)
from
(
select *, new_seq = row_number() over (order by seq)
from your_table
) t
where seq <> new_seq
TOP (1) avec ORDER BY approprié peut fonctionner plus rapidement que MIN dans ce cas
Sélectionnez le numéro de séquence minimum où le numéro de séquence plus un n'existe pas et ajoutez-en un:
select min(seqNo)+1 from SeqNoTable where seqNo+1 not in (select SeqNo from SeqNoTable)
red-gate.com/simple-talk/sql/t-sql-programming/...