ऐसा करने का एक तरीका यह है कि आप एक ऐसा पदानुक्रम स्तंभ जोड़ें जिसमें सूची में सभी पिछली आईडी हों:
with tasks (TaskId, ParentTaskId, [Name], TaskIdList) as
(
select parentTasks.TaskId,
parentTasks.ParentTaskId,
parentTasks.[Name],
parentTasks.TaskId
from Task parentTasks
where ParentTaskId is null
union all
select childTasks.TaskId,
childTasks.ParentTaskId,
childTasks.[Name],
tasks.TaskIdList + '.' + childTasks.TaskId
from Task childTasks
join tasks
on childTasks.ParentTaskId = tasks.TaskId
)
select TaskId, ParentTaskId, [Name] from tasks
order by TaskIdList
ध्यान दें कि यह मानता है कि टास्कआईड एक स्ट्रिंग-आधारित आईडी है। यदि नहीं, तो आपको इसे जोड़ने से पहले इसे एक वर्चर में डालना चाहिए।