Правилният начин да направите вашето ORDERing е да добавите клауза ORDER BY към вашия най-външен избор. Всичко останало разчита на подробности за изпълнението, които могат да се променят по всяко време (включително ако размерът на вашата база данни/таблици се увеличи, което може да позволи извършването на повече паралелна обработка).
Ако имате нужда от нещо удобно, което да позволи извършването на поръчката, погледнете Пример D в примерите от MSDN страница на 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
)
Добавете нещо подобно към колоната EmployeeLevel към вашия CTE и всичко трябва да работи.