Que diriez-vous de quelque chose comme :
select (select isnull(max(val)+1,1) from mydata where val < md.val) as [from],
md.val - 1 as [to]
from mydata md
where md.val != 1 and not exists (
select 1 from mydata md2 where md2.val = md.val - 1)
donnant des résultats résumés :
from to
----------- -----------
6 6
8 8
11 14