Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana cara menanyakan dan mengurai hierarki daftar yang berdekatan menggunakan cte?

Data contoh Anda membuat pertanyaan lebih jelas. Anda dapat mengumpulkan level manajer saat Anda turun:

; with  Tree as
        (
        SELECT  empid
        ,       mgrid
        ,       1 as lv
        ,       1 as level1
        ,       null as level2
        ,       null as level3
        ,       null as level4
        ,       null as level5
        FROM    Employees
        WHERE   mgrid IS NULL 
        UNION ALL
        SELECT  E.empid
        ,       E.mgrid
        ,       T.lv + 1
        ,       T.level1
        ,       case when T.lv = 1 then E.empid else t.level2 end
        ,       case when T.lv = 2 then E.empid else t.level3 end
        ,       case when T.lv = 3 then E.empid else t.level4 end
        ,       case when T.lv = 4 then E.empid else t.level5 end
        FROM    Employees AS E
        JOIN    Tree T
        ON      E.mgrid = T.empid
        )
select  *
from    Tree

Contoh di SQL Fiddle.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengambil desimal saat membulatkan rata-rata dalam SQL

  2. Kelompokkan berdasarkan kolom dan beberapa Baris menjadi Satu Baris beberapa kolom

  3. Saya tidak dapat menambahkan Microsoft.SqlServer.Management.Common ke Aplikasi ASP.NET MVC saya

  4. Gabungkan XML tanpa mengetikkan casting ke string

  5. EF Function Import tidak mengenali kolom yang dikembalikan oleh StoredProc