DECLARE @id INT = 6 ;WITH parent AS ( SELECT id, parentId, 1 AS [level] from tbl WHERE id = @id UNION ALL SELECT t.id, t.parentId, [level] + 1 FROM parent INNER JOIN tbl t ON t.id = parent.parentid ) SELECT TOP 1 id FROM parent ORDER BY [level] DESC
プレ>@TechDoの答えは、最も低いIDが親になることを前提としています。これに依存したくない場合、上記のクエリは深さでソートされます。