Лично я бы сказал следующее:
DECLARE @UserID int = 103;
WITH VTE AS
(SELECT *
FROM (VALUES (1, 100, 101),
(2, 101, 102),
(3, 102, 103),
(4, 103, NULL),
(5, 104, 109)) AS V (ID, UserID, DelegatedToUserID) ),
rCTE AS
(SELECT V.ID,
V.UserID,
V.DelegatedToUserID
FROM VTE V
WHERE UserID = @UserID
UNION ALL
SELECT V.ID,
V.UserID,
V.DelegatedToUserID
FROM rCTE r
JOIN VTE V ON r.DelegatedToUserID = V.UserID)
SELECT *
FROM rCTE
WHERE rCTE.DelegatedToUserID IS NULL;
Как я уже упоминал в комментариях, передача 104
вернет без строк , поскольку пользователь 109
не делает этого.существует в таблице.