Farei qualcosa del genere:
;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 forse sarebbe x2.rn - 1. Dovrai vedere. In ogni caso, hai un'idea. Dopo aver unito la tabella su se stessa, puoi filtrare, raggruppare, ordinare, ecc. per ottenere ciò di cui hai bisogno.