Я не на 100% уверен в том, как вы выводите даты начала и окончания там, но вы можете сделать это с помощью разворота:
;with src as
(
select
EmployeeId = '32018685A',
Name = 'Alan Smith',
FirstReviewDate = datefromparts(2000, 6, 8),
SecondReviewDate = datefromparts(2000, 9, 15),
ThirdReviewDate = datefromparts(2000, 9, 27)
), upvt as
(
select
EmployeeId,
Name,
DataType,
EndDate
from src s
unpivot
(
EndDate for DataType in
(
FirstReviewDate,
SecondReviewDate,
ThirdReviewDate
)
) p
)
select
EmployeeId,
Name,
DataType,
StartDate = isnull(lag(EndDate, 1, null) over (order by DataType), EndDate),
EndDate
from upvt