Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Porządkowanie hierarchii z wyników zapytań rekurencyjnych w SQL 2005

Jednym ze sposobów, aby to zrobić, jest dodanie kolumny hierarchii, która zawiera wszystkie poprzednie identyfikatory na liście:

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

Zauważ, że zakłada się, że TaskId jest identyfikatorem opartym na ciągach. Jeśli nie, powinieneś przesłać go do varchara przed połączeniem.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Grupowanie elementów z równomierną dystrybucją w SQL

  2. Korzystanie z SolarWinds Serv-U w systemie Linux z bazą danych uwierzytelniania SQL Server

  3. Problem z instrukcją CASE w procedurze składowanej serwera sql

  4. Nie można zapisać domyślnych lokalizacji baz danych w SQL Server

  5. W jaki sposób można wypełnić listę rozwijaną z bazy danych w asp.net przy użyciu klas?