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

SQL सर्वर रिकर्सिव सेल्फ जॉइन

बचाव के लिए पुनरावर्ती सीटीई....

नमूना तालिका बनाएं और पॉप्युलेट करें (कृपया इस चरण को अपने भविष्य के प्रश्नों में सहेजें):

DECLARE @T as table
(
    id int,
    name varchar(100),
    parent_id int
)

INSERT INTO @T VALUES
(1, 'A', NULL),
(2, 'A.1', 1),
(3, 'A.2', 1),
(4, 'A.1.1', 2),
(5, 'B', NULL),
(6, 'B.1', 5),
(7, 'B.1.1', 6),
(8, 'B.2', 5),
(9, 'A.1.1.1', 4),
(10, 'A.1.1.2', 4)

सीटीई:

;WITH CTE AS
(
    SELECT id, name, name as path, parent_id
    FROM @T 
    WHERE parent_id IS NULL
    UNION ALL
    SELECT t.id, t.name, cast(cte.path +','+ t.name as varchar(100)), t.parent_id
    FROM @T t
    INNER JOIN CTE ON t.parent_id = CTE.id
)

क्वेरी:

SELECT id, name, path
FROM CTE

परिणाम:

id      name        path
1       A           A
5       B           B
6       B.1         B,B.1
8       B.2         B,B.2
7       B.1.1       B,B.1,B.1.1
2       A.1         A,A.1
3       A.2         A,A.2
4       A.1.1       A,A.1,A.1.1
9       A.1.1.1     A,A.1,A.1.1,A.1.1.1
10      A.1.1.2     A,A.1,A.1.1,A.1.1.2

रेक्सटेस्टर पर ऑनलाइन डेमो देखें




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर (T-SQL) में गलत पासवर्ड के कारण लॉगिन के लिए असफल लॉगिन प्रयासों की संख्या प्राप्त करें

  2. डेटाबेस डिजाइन में प्राथमिक कुंजी के रूप में विशिष्ट पहचानकर्ता (गाइड)

  3. SQL सर्वर varchar कॉलम से अजीब वर्ण (A टोपी के साथ) निकालें

  4. मैं DELETE कथन में उपनाम का उपयोग क्यों नहीं कर सकता?

  5. SQL सर्वर में Msg 8116 "तर्क डेटा प्रकार varchar session_context फ़ंक्शन के तर्क 1 के लिए अमान्य है" को ठीक करें