The link in the comment from Klas Lindbäck is refering to sqlserver 2005. In sqlserver 2012 you can use LAG
;WITH CTE AS
(
SELECT
CASE WHEN
coalesce(LAG(a) over (order by a), 0) + 1 = a
THEN 1 ELSE 0 END SequenceIntact,
a
FROM (values(1),(3),(5),(6),(7)) t(a)
)
SELECT
SequenceIntact,
a
FROM cte
Edit: Since you are using sqlserver 2008, you can't use LAG, but you can use row_number - I used dense_rank to compensate for duplicates:
;WITH CTE as
(
SELECT
a - dense_rank() over (order by a) grp,
a
FROM (values(1),(3),(5),(6),(7)) t(a)
)
SELECT
CASE WHEN min(a) over (partition by grp) = a
and a > 1 -- allowing first value to have SequenceIntact
THEN 0 ELSE 1 END SequenceIntact,
a
FROM CTE
Result:
SequenceIntact a
1 1
0 3
0 5
1 6
1 7