sql >> Database >  >> RDS >> Sqlserver

Hiërarchie ordenen van recursieve queryresultaten in SQL 2005

Een manier om dit te doen is door een hiërarchiekolom toe te voegen die alle eerdere ID's in een lijst heeft:

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

Houd er rekening mee dat dit ervan uitgaat dat TaskId een op tekenreeksen gebaseerde ID is. Zo niet, dan moet je het naar een varchar casten voordat je het samenvoegt.



  1. Virtuele machine verwijderen uit VirtualBox

  2. FROM_UNIXTIME() Voorbeelden – MySQL

  3. Is het veilig om gebruikersnamen en wachtwoorden in de database op te slaan?

  4. MySQL-database herstellen vanuit fysieke bestanden