Хммм.,,Определите, где начинаются периоды работы.Тогда вы можете использовать условное агрегирование:
select empid,
max(case when prev_stop_date is null or
prev_stop_date <> start_date - 1
then start_date
end) as start_date,
max(stop_date) as stop_date
from (select t.*,
lag(stop_date) over (partition by empid order by start_date) as prev_stop_date
from t
) t
group by empid;