Správný způsob, jak provést ORDERing, je přidat klauzuli ORDER BY k vašemu nejvzdálenějšímu výběru. Cokoli jiného závisí na podrobnostech implementace, které se mohou kdykoli změnit (včetně případů, kdy se zvětší velikost vaší databáze/tabulek, což může umožnit paralelnější zpracování).
Pokud potřebujete něco pohodlného, aby se objednávka mohla uskutečnit, podívejte se na příklad D v příkladech z Stránka MSDN na 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
)
Přidejte něco podobného do sloupce EmployeeLevel do vašeho CTE a vše by mělo fungovat.