sql >> Database teknologi >  >> RDS >> Sqlserver

Bestilling af hierarki fra rekursiv forespørgsel resulterer i SQL 2005

En måde du kan gøre dette på er at tilføje en hierarkikolonne, der har alle tidligere id'er på en liste:

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

Bemærk, at dette forudsætter, at TaskId er et streng-baseret ID. Hvis ikke, bør du støbe det til en varchar, før du sammenkæder det.



  1. Hvem har nogen dokumenter om PostgreSQL-baggrundsprocesser?

  2. Reducer generende meddelelser i plpgsql

  3. VENSTRE JOIN i ZF2 ved hjælp af TableGateway

  4. Vigtigste teknologiændringer i E-Business Suite 12.2