Create table tblFindGaps(Sno int not null)Go
Insert tblFindGaps values (1)Insert tblFindGaps values (10)Insert tblFindGaps values (3)Insert tblFindGaps values (5)Insert tblFindGaps values (9)Insert tblFindGaps values (11)Insert tblFindGaps values (15)Insert tblFindGaps values (18)Insert tblFindGaps values (22)Insert tblFindGaps values (100)Go
Declare @intMaxNum intSelect @intMaxNum = max(Sno) from tblFindGaps;With tempData (result) as(Select distinct FG.Sno + 1 from tblFindGaps FG where not exists(Select 1 from tblFindGaps FGP where FGP.Sno = FG.Sno + 1) and FG.Sno < @intMaxNumUnion AllSelect TD.result + 1 from tempData TD where not exists(Select 1 from tblFindGaps FGP where FGP.Sno = TD.result + 1) and TD.result < @intMaxNum)Select result as 'Missing Numbers' from tempData order by result;