DECLARE @Table TABLE (ID INT, VDate DATETIME, VISIT INT)
INSERT INTO @Table
VALUES (10003, '2003-09-26 00:00:00.000', 1), (10003, '2004-05-15 00:00:00.000', 2), (10003, '2007-01-09 00:00:00.000', 3), (10003, '2007-07-05 00:00:00.000', 4)
SELECT
T1.ID
,CAST(T1.VDate AS DATE) AS visit_date
,(SELECT TOP 1
CAST(T2.VDate AS DATE)
FROM @Table AS T2
WHERE T1.ID = T2.ID
AND T2.VDate > T1.VDate)
AS follow_up
FROM @Table AS T1
ORDER BY VISIT
Демо
Если вы хотите обновить столбец
DECLARE @Table TABLE (ID INT, VDate DATETIME, follow_up DATETIME, VISIT INT)
INSERT INTO @Table (ID, VDate, VISIT)
VALUES (10003, '2003-09-26 00:00:00.000', 1), (10003, '2004-05-15 00:00:00.000', 2), (10003, '2007-01-09 00:00:00.000', 3), (10003, '2007-07-05 00:00:00.000', 4)
UPDATE T1
SET T1.follow_up = (SELECT TOP 1
T2.VDate
FROM @Table T2
WHERE T1.ID = T2.ID
AND T2.VDate > T1.VDate)
FROM @TABLE T1
SELECT
ID
,CAST(VDate AS DATE) AS visit_date
,CAST(follow_up AS DATE) AS follow_up
FROM @Table
UpdateDemo