У меня есть таблица А «задачу» со следующими столбцами (TaskOrder для заказа детей в рамках родительского, а не вся таблица):Упорядочение из рекурсивных результатов запроса в SQL 2005
TaskId ParentTaskId TaskName TaskOrder
Я получил этот запрос CTE вернуть все строки:
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
этот запрос возвращает все задачи, упорядоченные по уровню, как и следовало ожидать. Как я могу изменить его, чтобы упорядочить результаты в порядке их иерархии, как показано ниже?
- Task 1 -- Task 1 Subtask 1 -- Task 1 Subtask 2 - Task 2 - Task 3
Спасибо.
Редактировать: Ответ должен работать с неограниченным количеством уровней.
Вы просто экспериментируете с CTE, или это проще для вас, чем прямой SQL? – dkretz
Да, экспериментируя с CTE, но если есть лучшее решение с прямым SQL, я буду использовать это. – Nick