Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách tạo SQL Server 2005 CTE để trả về bản ghi cha-con, dành cho trẻ có nhiều cha mẹ

Điều này dường như hoạt động tốt đối với tôi, sau khi tôi sửa lỗi cú pháp trong CTE của bạn:

create table #ParentChildTable 
(nodeID int not null
,parentNodeID int not null
)

insert #ParentChildTable 
select 900,56
union all select 900,123
union all select 123,439
union all select 56,439
union all select 439,0

;WITH Heirarchy
AS
(
    SELECT 
        T1.NodeID,
          T1.ParentNodeID
    FROM
        #ParentChildTable T1
    WHERE
        T1.NodeID = 439

    UNION ALL
    SELECT 
        T1.NodeID,
        T1.ParentNodeID
    FROM
        #ParentChildTable T1
        INNER JOIN Heirarchy TH ON TH.NodeID = T1.ParentNodeID
)
select *
from Heirarchy

Trả về kết quả:

NodeID      ParentNodeID
----------- ------------
439         0
123         439
56          439
900         56
900         123


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hàm YEAR (ngày) hiệu quả như thế nào?

  2. cách tách một chuỗi theo khoảng trắng trong SQL

  3. Truy vấn SQL về thời gian tham gia Vào / Ra

  4. Làm thế nào để nhận tổng số giờ giữa hai ngày trong máy chủ sql?

  5. Cách tạo chuỗi trong SQL Server 2008