Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एसक्यूएल सीटीई के साथ पूर्ण पदानुक्रम कैसे प्राप्त करें

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. पहचान कॉलम डालने के लिए मैं इकाई ढांचे को कैसे मजबूर कर सकता हूं?

  2. SQL सर्वर में ट्री संरचना डेटा क्वेरी

  3. SQL सर्वर डेटाबेस (T-SQL) में फ़ाइल समूह कैसे जोड़ें

  4. SQL संग्रहीत कार्यविधियों में लॉगिंग और त्रुटि रिपोर्टिंग को कैसे कार्यान्वित करें?

  5. क्या एक INNER JOIN EXISTS से बेहतर प्रदर्शन की पेशकश कर सकता है