В приведенном ниже решении используются оконные функции для получения первого значения.
На основе рейтинга через накопленную сумму.
Который основан на месячной разнице между начальной датой и предыдущей конечной датой.
Не совсем красиво, поскольку он использует 2 подзапроса и 3 оконные функции для чего-то, что кажется таким простым.
Но это возвращает те ожидаемые результаты.
select
EmployeeID, Departement, [Company Start Date], [Company End Date],
first_value([Company Start Date]) over (partition by EmployeeID, CummSumRank order by [Company Start Date]) as SeniorityStart
from
(
select *, sum(MonthDiffStartVersusPreviousEndToBig) over (partition by EmployeeID order by [Company Start Date]) as CummSumRank
from
(
select EmployeeID, Departement, [Company Start Date], [Company End Date],
iif(datediff(month, lag([Company End Date]) over (partition by EmployeeID order by [Company Start Date]), [Company Start Date]) > 6, 1, 0) as MonthDiffStartVersusPreviousEndToBig
from Employees
) as q1
) as q2
order by EmployeeID, [Company Start Date];