3
votes

Comment trouver le numéro de séquence manquant qui est minimum

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 :


2
votes

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)


0 commentaires

2
votes

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


1 commentaires

TOP (1) avec ORDER BY approprié peut fonctionner plus rapidement que MIN dans ce cas



2
votes

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)


0 commentaires