Ваш вывод выглядит довольно странно в вашем примере, поскольку ваш EventTime, кажется, происходит после вашего EndTime. Если вы ищете порядок времени и ожидаете результирующий набор, подобный этому:
Тогда комментарий xQbert верен. Вам нужно только добавить EventTime в ваш Order By. Смотрите пример кода ниже.
CREATE TABLE #T (
PersonID INT
,EventTime DATETIME
,ActivityCode INT
)
INSERT INTO #T(
PersonID
,EventTime
,ActivityCode
)
SELECT
PersonID
,EventTime
,ActivityCode
FROM
(VALUES ( 1,'2019-07-29 00:03:03.000', 7)
,(1,'2019-07-29 00:09:41.000', 0)
,(1,'2019-07-29 00:01:07.000', 7)
,(1,'2019-07-29 00:01:19.000', 0)) AS T (PersonID,EventTime,ActivityCode)
SELECT
PersonID
,ActivityCode
,EventTime AS starttime
,(LEAD(EventTime) OVER (ORDER BY PersonID, EventTime DESC)) AS endtime
FROM
#T;