Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Подреждане на йерархия от рекурсивни резултати от заявки в SQL 2005

Един от начините да направите това е да добавите йерархична колона, която съдържа всички предишни идентификатори в списък:

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

Имайте предвид, че това предполага, че TaskId е базиран на низ идентификатор. Ако не, трябва да го прехвърлите към varchar, преди да го свържете.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Прехвърляне на данни от една база данни в друга база данни

  2. Как да внедрим условна съхранена процедура Upsert?

  3. защо не мога да създам SQL база данни във VS 2010?

  4. Как да направя препратка към псевдоним в клауза WHERE?

  5. ПРОВЕРЕТЕ ОГРАНИЧЕНИЕТО на множество колони