Edit, after Q update
DECLARE @t TABLE (pkSDSID int NOT NULL, fkSDSID int NULL);
INSERT @t VALUES
(50605, NULL),
(88377, 50605),
(90602, 88377),
(90616, 90602),
(45670, NULL),
(50123, 45670),
(51234, 50123),
(60125, 51234);
with tree as (
SELECT S.pkSDSID, S.fkSDSID, 0 AS TreeLevel, S.pkSDSID AS TreeTop
FROM @t S
WHERE S.pkSDSID IN (50605, 45670)
UNION ALL
SELECT t1.pkSDSID, t1.fkSDSID, TreeLevel +1, p.TreeTop
FROM @t t1
JOIN tree p ON p.pkSDSID = t1.fkSDSID
)
, Filter AS
(
SELECT
pkSDSID,
ROW_NUMBER() OVER (PARTITION BY TreeTop ORDER BY TreeLevel DESC) AS rn
FROM tree
)
SELECT pkSDSID FROM Filter WHERE rn = 1