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

पेड़ पदानुक्रम प्राप्त करने के लिए सीटीई रिकर्सन

इसे आजमाएं:

;WITH items AS (
    SELECT EstimateItemID, ItemType
    , 0 AS Level
    , CAST(EstimateItemID AS VARCHAR(255)) AS Path
    FROM EstimateItem 
    WHERE ParentEstimateItemID IS NULL AND EstimateID = @EstimateID

    UNION ALL

    SELECT i.EstimateItemID, i.ItemType
    , Level + 1
    , CAST(Path + '.' + CAST(i.EstimateItemID AS VARCHAR(255)) AS VARCHAR(255))
    FROM EstimateItem i
    INNER JOIN items itms ON itms.EstimateItemID = i.ParentEstimateItemID
)

SELECT * FROM items ORDER BY Path

Path के साथ - माता-पिता नोड्स द्वारा क्रमबद्ध पंक्तियाँ

यदि आप चाइल्डनोड्स को ItemType . द्वारा क्रमबद्ध करना चाहते हैं प्रत्येक स्तर के लिए, आप Level . के साथ खेल सकते हैं और SUBSTRING Path . का कॉलम....

यहां डेटा के नमूने के साथ SQLFiddle



  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 टेबल्स में प्रोग्रामेटिक रूप से पहचान कॉलम क्या है?

  2. प्राथमिक कुंजी के रूप में GUID का उपयोग करने के लिए, विशेष रूप से प्रदर्शन के संबंध में सर्वोत्तम अभ्यास क्या हैं?

  3. कई इंडेक्स वाली टेबल के लिए स्लो बल्क इंसर्ट

  4. क्लाउड-आधारित डेटाबेस निगरानी समाधान के 5 सुरक्षा लाभ

  5. SQL सर्वर में तिथियों की एक श्रृंखला कैसे उत्पन्न करें