我有一個「任務」表具有以下的列(在TaskOrder是父,而不是整個表的範圍內訂購兒童):訂購層次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 2009-02-11 22:53:38
是的,試驗CTE,但如果有更好的解決方案,直接使用SQL我會使用.. – Nick 2009-02-11 23:04:31