La bonne façon de faire votre commande est d'ajouter une clause ORDER BY à votre sélection la plus externe. Tout le reste dépend des détails de mise en œuvre qui peuvent changer à tout moment (y compris si la taille de votre base de données/tables augmente, ce qui peut permettre un traitement plus parallèle).
Si vous avez besoin de quelque chose de pratique pour permettre la commande, regardez l'exemple D dans les exemples de Page MSDN sur AVEC :
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
)
Ajoutez quelque chose de similaire à la colonne EmployeeLevel de votre CTE, et tout devrait fonctionner.