Hola , tengo una duda con respecto a las CTE's recursivas. El ejemplo que
sale en books online al ejecutarlo los resultados comienzan ordenados por la
columna LEVEL de menor a mayor 0 1 2 3 4 pero en cierto punto comienza a
descender como 0 1 2 3 4 3 3 2, o sea no estan ordenados de menor a mayor
todo el tiempo que es como se supone que trabaja haciendo UNION ALL a todos
los resultados parciales. Alguien me puede ayudar a comprender esto?
El ejemplo de books online (el ultimo WHERE lo elimine para que salgan todos
los resultados:
USE AdventureWorks;
GO
WITH DirectReports (ManagerID, EmployeeID, Title, DeptID, Level)
AS
(
SELECT e.ManagerID, e.EmployeeID, e.Title, edh.DepartmentID,
0 AS Level
FROM HumanResources.Employee AS e
INNER JOIN HumanResources.EmployeeDepartmentHistory AS edh
ON e.EmployeeID = edh.EmployeeID AND edh.EndDate IS NULL
WHERE ManagerID IS NULL
UNION ALL
SELECT e.ManagerID, e.EmployeeID, e.Title, edh.DepartmentID,
Level + 1
FROM HumanResources.Employee AS e
INNER JOIN HumanResources.EmployeeDepartmentHistory AS edh
ON e.EmployeeID = edh.EmployeeID AND edh.EndDate IS NULL
INNER JOIN DirectReports AS d
ON e.ManagerID = d.EmployeeID
)
SELECT ManagerID, EmployeeID, Title, Level
FROM DirectReports
Leer las respuestas