Jeg ville gøre sådan noget:
;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 måske ville det være x2.rn - 1. Du bliver nødt til at se. I hvert fald får du ideen. Når du har bordet sammen med sig selv, kan du filtrere, gruppere, sortere osv. for at få det, du har brug for.