2011-12-11 18 views
7

मैं एक मेज इस तरह है के लिए कैसे चयन एक्सएमएल क्षेत्रों नोडसभी पंक्तियों

enter image description here

मैं कैसे

YEAR   ID   NAME    LASTNAME 
--------------------------------------------------- 
2011   1000   Nima    Agha 
2011   1001   Begha    Begha 
2011   1002   Jigha    Jigha 
2011   1003   Aba    Aba 
2012   1034   AAA    BBB 
... 

धन्यवाद

: इस परिणाम प्राप्त कर सकते हैं

उत्तर

10

कैसे इस बारे में:

SELECT 
    Year, 
    E.P.value('(ID)[1]', 'INT') AS 'ID', 
    E.P.value('(Name)[1]', 'VARCHAR(50)') AS 'Name', 
    E.P.value('(LastName)[1]', 'VARCHAR(50)') AS 'LastName' 
FROM 
    dbo.YourTable 
CROSS APPLY 
    Fields.nodes('/Employees/Person') AS E(P) 

आप मूल रूप से आधार तालिका से Year चयन किए जाने वाले और फिर एक "इनलाइन एक्सएमएल तालिका" एक भी एक्सएमएल स्तंभ के साथ E बुलाया में Fields स्तंभ से प्रत्येक <Person> नोड निकालने P बुलाया (आप उन लोगों के लिए जो भी नाम पसंद करते हैं उन्हें चुन सकते हैं) कि आप फिर से व्यक्तिगत तत्वों से पूछताछ और निकालें।

+0

वह ग्रीट है। धन्यवाद – Arian

+0

'क्रॉस एप्प्ली' के बिना मेरे फ़ील्ड का चयन करने का कोई तरीका है? मैं इस चयन – Arian

+0

@ निमा: संख्या के आधार पर इंडेक्स व्यू बनाना चाहता हूं। क्रॉस आवेदन एक एक्सएमएल कॉलम में संग्रहीत ** सभी ** एक्सएमएल तत्वों को पकड़ने का तरीका है। मुझे किसी भी अन्य तरीके से पता नहीं है –

संबंधित मुद्दे