Не существует такой вещи, как строка, которая содержит только одно поле в наборе результатов для нескольких полей (даже с использованием временных таблиц и курсоров).
Вы можете установить для других полей значение NULL
для родительской записи.
SELECT Name, FieldA, FieldB
FROM (
SELECT 1 Type, p.ID ID, NULL SubID, p.Name Name, NULL FieldA, NULL FieldB
FROM hierarchyTable p
WHERE p.ParentID IS NULL
UNION ALL SELECT 2, c.ParentID, c.ID, c.Name, FieldA, FieldB
FROM hierarchyTable c
WHERE c.ParentID IS NOT NULL
) rs
ORDER BY ID, Type, SubID
В качестве альтернативы вы можете использовать один запрос:
SELECT Name,
CASE WHEN ParentID IS NULL
THEN NULL
ELSE FieldA
END AS FieldA,
CASE WHEN ParentID IS NULL
THEN NULL
ELSE FieldB
END AS FieldB
FROM hierarchyTable
ORDER BY COALESCE(ParentID, ID),
CASE WHEN ParentID IS NULL THEN 0 ELSE 1 END,
ID