Tôi sẽ làm một cái gì đó như thế này:
;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
Hoặc có thể nó sẽ là x2.rn - 1. Bạn sẽ phải xem. Trong mọi trường hợp, bạn có được ý tưởng. Khi bạn đã tự nối bảng, bạn có thể lọc, nhóm, sắp xếp, v.v. để lấy những gì bạn cần.