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

पैरेंट चाइल्ड पदानुक्रम तालिका से क्वेरी कैसे बनाएं

यदि आपके पास निश्चित या सीमित संख्या में स्तर हैं, तो आपको DYNAMIC SQL की आवश्यकता नहीं हो सकती है। "पार्सिंग" पथ को थोड़ा एक्सएमएल के साथ पूरा किया जा सकता है।

निम्नलिखित पर विचार करें:

उदाहरण:

Declare @YourTable Table ([Parent] varchar(50),[Child] varchar(50))
Insert Into @YourTable Values 
 (null ,'S-1')
,('S-1','S-11')
,('S-1','S-12')
,('S-1','S-13')
,('S-1','S-14')
,('S-1','S-15')
,('S-11','S-111')
,('S-11','S-112')

;with cteP as (
      Select Child
            ,Parent 
            ,PathID = cast(Child as varchar(500))
      From   @YourTable
      Where  Parent is Null
      Union  All
      Select Child  = r.Child
            ,Parent = r.Parent 
            ,PathID = cast(p.PathID+','+cast(r.Child as varchar(25)) as varchar(500))
      From   @YourTable r
      Join   cteP p on r.Parent  = p.Child)
Select [Group] = Child
      ,B.*
 From  cteP A
 Cross Apply (
                Select Level1 = xDim.value('/x[1]','varchar(max)')
                      ,Level2 = xDim.value('/x[2]','varchar(max)')
                      ,Level3 = xDim.value('/x[3]','varchar(max)')
                      ,Level4 = xDim.value('/x[4]','varchar(max)')
                      ,Level5 = xDim.value('/x[5]','varchar(max)')
                From  (Select Cast('<x>' + replace(PathID,',','</x><x>')+'</x>' as xml) as xDim) as X 
             ) B
  Order By PathID

रिटर्न




  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 सर्वर 2005/2008

  3. नए SQL सर्वर कार्डिनैलिटी अनुमानक पर पहली नज़र

  4. SQL सर्वर 2017 में एक डेटाबेस का बैकअप लें

  5. कैसे ठीक करें "निष्पादन कथन विफल हुआ क्योंकि इसके परिणाम सेट क्लॉज के साथ परिणाम सेट के लिए 2 कॉलम निर्दिष्ट हैं ..." SQL सर्वर में संदेश 11537