Как найти пропущенный порядковый номер, который является минимальным - PullRequest
3 голосов
/ 18 марта 2019

У меня есть одна таблица с порядковым номером.

Я хочу найти пропущенный порядковый номер, который является минимальным из пропущенных номеров.

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 ]

2 голосов
/ 18 марта 2019

используйте row_number() для генерации новой последовательности и сравните ее с вашей оригинальной последовательностью

select  min(new_seq)
from
(
    select  *, new_seq = row_number() over (order by seq)
    from    your_table
) t
where   seq <> new_seq
2 голосов
/ 18 марта 2019

Выберите минимальный порядковый номер, в котором порядковый номер плюс один не существует, и добавьте один:

select min(seqNo)+1 from SeqNoTable where seqNo+1 not in (select SeqNo from SeqNoTable)
2 голосов
/ 18 марта 2019

Вы можете попробовать с 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...