select *
from(select *,
lead(free) over(order by seat_id) as down,
lag(free) over(order by seat_id) as up
from T0527
)t
where free=1
and (down=1 or up=1)
order by seat_id
WITH a AS (SELECT *,ROW_NUMBER() OVER(ORDER BY seat_id) r,
(seat_id - ROW_NUMBER() OVER(ORDER BY seat_id)) b
FROM T0527
WHERE free = 1)
SELECT seat_id FROM a
WHERE b IN
(SELECT b FROM a
GROUP BY b
HAVING COUNT(*) >=2)