Det korrekta sättet att göra din BESTÄLLNING är att lägga till en ORDER BY-klausul till ditt yttersta urval. Allt annat förlitar sig på implementeringsdetaljer som kan ändras när som helst (inklusive om storleken på din databas/tabeller ökar, vilket kan tillåta mer parallell bearbetning).
Om du behöver något bekvämt för att beställningen ska kunna ske, titta på exempel D i exemplen från MSDN-sida på 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
)
Lägg till något liknande i kolumnen EmployeeLevel till din CTE, så borde allt fungera.