Tengo mesa de una 'misión' con las siguientes columnas (la TaskOrder es para pedir a los niños en el ámbito de los padres, no toda la tabla):Orden de los resultados de consultas recursivas en SQL 2005
TaskId ParentTaskId TaskName TaskOrder
Tengo esta consulta CTE para devolver todas las filas:
with tasks (TaskId, ParentTaskId, [Name]) as
(
select parentTasks.TaskId,
parentTasks.ParentTaskId,
parentTasks.[Name]
from Task parentTasks
where ParentTaskId is null
union all
select childTasks.TaskId,
childTasks.ParentTaskId,
childTasks.[Name]
from Task childTasks
join tasks
on childTasks.ParentTaskId = tasks.TaskId
)
select * from tasks
esta consulta devuelve todas las tareas ordenadas por su nivel como era de esperar. ¿Cómo puedo cambiarlo para ordenar los resultados en el orden jerárquico que se muestra a continuación?
- Task 1 -- Task 1 Subtask 1 -- Task 1 Subtask 2 - Task 2 - Task 3
Thanks.
Editar: La respuesta debería funcionar con un número ilimitado de niveles.
¿Estás experimentando con CTE, o es más simple para ti que SQL directo? – dkretz
Sí, experimentando con CTE, pero si hay una mejor solución con SQL directo lo usaré ... – Nick