Yo haría algo como esto:
;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
O tal vez sería x2.rn - 1. Tendrás que ver. En cualquier caso, te haces una idea. Una vez que haya unido la tabla sobre sí misma, puede filtrar, agrupar, ordenar, etc. para obtener lo que necesita.