Вы можете попытаться использовать рекурсивную CTE с функцией, усугубленной условием.
первый запрос, использующий рекурсивную CTE, получит все данные рекурсивной связи.
второй запрос использует MAX
оконную функцию дляполучить максимальное число, которое означает parentId.
;WITH CTE AS(
SELECT t1.ID,t1.Name,t1.ParentID,1 num
FROM T t1 LEFT JOIN T t2 on t1.ID = t2.ParentID
WHERE t2.ID IS NULL
UNION ALL
SELECT t2.ID,t2.NAME,t2.ParentID,num + 1
FROM CTE t1 JOIN T t2 ON t1.ParentID = t2.ID
),CTE2 AS (
SELECT *,MAX(num) OVER(ORDER BY num desc) maxNum
FROM CTE
)
SELECT MAX(CASE WHEN num = 1 then ID END) ChildID1,
MAX(CASE WHEN num = 1 then name END) Child1Name,
MAX(CASE WHEN num = 2 then ID END) ChildID2,
MAX(CASE WHEN num = 2 then Name END) Child2Name,
MAX(CASE WHEN num = maxNum then ID END) ParentID,
MAX(CASE WHEN num = maxNum then Name END) ParentName
FROM CTE2
sqlfiddle