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

Penggabungan Rekursif dari Elemen Induk

Anda dapat menggunakan CTE rekursif .

declare @T table(ID int, Name char(1), Parent int);

insert into @T values  
(1      ,'A'       ,NULL),
(2      ,'B'       ,NULL),
(3      ,'C'       ,1),
(4      ,'D'       ,1),
(5      ,'E'       ,3),
(6      ,'F'       ,5);

with C as
(
  select ID,
         Name,
         Parent,
         cast('' as varchar(max)) as ParentNames
  from @T
  where parent is null
  union all
  select T.ID,
         T.Name,
         T.Parent,
         C.ParentNames + ' > ' + C.Name
  from @T as T         
    inner join C
      on C.ID = T.Parent
)      
select ID,
       Name,
       stuff(ParentNames, 1, 3, '') as ParentNames
from C;     


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Versi SQL Server mana yang didukung LINQ to SQL?

  2. Bagaimana cara membagi string menggunakan char pembatas menggunakan T-SQL?

  3. Tidak dapat menemukan server 'nama DB' di sys.servers (bukan masalah dbo)

  4. Script untuk mematikan semua koneksi ke database (Lebih dari RESTRICTED_USER ROLLBACK)

  5. PHP, ORM, MSSQL dan Unicode, apakah mungkin untuk membuat ini bekerja bersama?