Бих направил нещо подобно:
;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
Или може би ще бъде x2.rn - 1. Ще трябва да видите. Във всеки случай схващате идеята. След като обедините самата таблица, можете да филтрирате, групирате, сортирате и т.н., за да получите това, от което се нуждаете.