Der richtige Weg, Ihre ORDERing durchzuführen, besteht darin, Ihrer äußersten Auswahl eine ORDER BY-Klausel hinzuzufügen. Alles andere hängt von Implementierungsdetails ab, die sich jederzeit ändern können (einschließlich, wenn die Größe Ihrer Datenbank/Tabellen zunimmt, was eine weitere parallele Verarbeitung ermöglichen kann).
Wenn Sie etwas Praktisches benötigen, um das Bestellen zu ermöglichen, sehen Sie sich Beispiel D in den Beispielen aus der MSDN-Seite auf WITH :
WITH DirectReports(ManagerID, EmployeeID, Title, EmployeeLevel) AS
(
SELECT ManagerID, EmployeeID, Title, 0 AS EmployeeLevel
FROM dbo.MyEmployees
WHERE ManagerID IS NULL
UNION ALL
SELECT e.ManagerID, e.EmployeeID, e.Title, EmployeeLevel + 1
FROM dbo.MyEmployees AS e
INNER JOIN DirectReports AS d
ON e.ManagerID = d.EmployeeID
)
Fügen Sie Ihrem CTE etwas Ähnliches zur EmployeeLevel-Spalte hinzu, und alles sollte funktionieren.