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

एक्सएमएल के नेस्टेड पदानुक्रम को एसक्यूएल टेबल में कैसे बदलें

इसके बारे में कैसे (मैंने @input declared घोषित किया अपनी एक्सएमएल सामग्री के साथ एक्सएमएल डेटाटाइप वैरिएबल बनने के लिए - तदनुसार बदलें):

SELECT
    Parent.Elm.value('(@ID)[1]', 'int') AS 'ID',
    Parent.Elm.value('(Title)[1]', 'varchar(100)') AS 'Title',
    Parent.Elm.value('(Description)[1]', 'varchar(100)') AS 'Description',
    Child.Elm.value('(@ID)[1]', 'int') AS 'ChildID',
    Child.Elm.value('(Title)[1]', 'varchar(100)') AS 'ChildTitle',
    Child.Elm.value('(StartDate)[1]', 'DATETIME') AS 'StartDate',
    Child.Elm.value('(EndDate)[1]', 'DATETIME') AS 'EndDate'
FROM
    @input.nodes('/ROOT/WrapperElement/ParentElement') AS Parent(Elm)
CROSS APPLY
    Parent.Elm.nodes('ChildElement') AS Child(Elm)

आप मूल रूप से सभी /ROOT/WrapperElement/ParentElemet . पर पुनरावृति करते हैं नोड्स (Parent(Elm) के रूप में) छद्म तालिका), और उनमें से प्रत्येक प्रविष्टि के लिए, आप तब एक CROSS APPLY . करते हैं उस ParentElement . के अंदर निहित बाल तत्वों के लिए और आवश्यक जानकारी निकाल लें।

काम करना चाहिए - मुझे उम्मीद है!




  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. मिनटों की संख्या को एचएच में कैसे बदलें:टीएसक्यूएल में मिमी प्रारूप?

  3. SQL सर्वर में ऑडिट ट्रिगर बनाना

  4. निश्चित अंतराल में विशिष्ट यादृच्छिक समय पीढ़ी

  5. SQL सर्वर:5 कॉलम से अधिक गतिशील पिवट