Jag skulle göra något sånt här:
;WITH x
AS (SELECT *,
Row_number()
OVER(
partition BY employeeid
ORDER BY datestart) rn
FROM employeehistory)
SELECT *
FROM x x1
LEFT OUTER JOIN x x2
ON x1.rn = x2.rn + 1
Eller kanske det skulle vara x2.rn - 1. Du måste se. Du fattar i alla fall idén. När du har sammanfogat tabellen på sig själv kan du filtrera, gruppera, sortera, etc. för att få det du behöver.