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

Cara mendapatkan Hirarki lengkap dengan SQL CTE

DECLARE @tmp TABLE(ID INT,ParentID INT,NAME VARCHAR(10),DEPTH INT)

INSERT INTO @tmp VALUES
(1      ,NULL            ,'A'             ,1 ),
(2      ,NULL            ,'B'             ,1 ),
(3      ,NULL            ,'C'             ,1 ),
(4      ,1               ,'D'             ,2 ),
(5      ,4               ,'E'            ,3 ),
(6      ,5               ,'F'            ,4 );

select * from @tmp

;WITH cte AS
(
    SELECT   A.ID
            ,A.ParentID
            ,A.NAME
            ,A.DEPTH
    FROM    @tmp A

    UNION ALL

    SELECT   A.ID
            ,B.ParentID
            ,A.NAME
            ,A.DEPTH 
    FROM    cte A 
    INNER JOIN @tmp B on A.ParentID = B.ID 
    WHERE   B.ParentID IS NOT NULL

)

SELECT * FROM cte


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbedaan antara tipe string yang berbeda di SQL Server?

  2. Bagaimana Anda menentukan nomor port yang berbeda di SQL Management Studio?

  3. Bagaimana cara menghitung dalam SQL semua bidang dengan nilai nol dalam satu catatan?

  4. SSIS. Bagaimana cara menyalin data dari satu tabel ke tabel yang berbeda?

  5. Impor data dari Excel tipe float ke varchar di SQL Server 2008