में XML तत्व का चयन करें मेरे पास कुछ XML है जो मुझे SQL Server 2008 का उपयोग करके पार्स करने की आवश्यकता है। मुझे लगता है कि मैं जो चाहता हूं उसे पाने के करीब हूं, लेकिन मेरे पास सही वाक्यविन्यास नहीं है (मुझे विश्वास है)।SQL सर्वर
DECLARE @doc XML
SET @doc = '<ROOT>
<InvoiceDetail>
<OrderId>1000000</OrderId>
<OrderTypeId>2</OrderTypeId>
<Id>2000</Id>
<InvoiceItems>
<InvoiceItem>
<LineId>1</LineId>
<Cd>123456</Cd>
<Description>Item 1</Description>
<Quantity>1</Quantity>
<UnitPrice>99.990000</UnitPrice>
</InvoiceItem>
<InvoiceItem>
<LineId>2</LineId>
<Cd>234567</Cd>
<Description>Item 2</Description>
<Quantity>1</Quantity>
<UnitPrice>89.990000</UnitPrice>
</InvoiceItem>
</InvoiceItems>
</InvoiceDetail>
<InvoiceDetail>
<OrderId>1200000</OrderId>
<OrderTypeId>1</OrderTypeId>
<Id>3000</Id>
<InvoiceItems>
<InvoiceItem>
<LineId>1</LineId>
<Cd>234567</Cd>
<Description>Item 2</Description>
<Quantity>1</Quantity>
<UnitPrice>89.990000</UnitPrice>
</InvoiceItem>
<InvoiceItem>
<LineId>2</LineId>
<Cd>345678</Cd>
<Description>Item 3</Description>
<Quantity>1</Quantity>
<UnitPrice>79.990000</UnitPrice>
</InvoiceItem>
</InvoiceItems>
</InvoiceDetail>
</ROOT>'
SELECT
Invoices.Node.value('@OrderId', 'VARCHAR(10)') 'OrderID'
, Invoices.Node.value('@Id', 'INT') 'InvoiceId'
, Items.Cd.value('.', 'VARCHAR(14)') 'ItemId'
FROM
@doc.nodes('//InvoiceDetail') Invoices(Node)
CROSS APPLY Invoices.Node.nodes('./InvoiceItems/InvoiceItem/Cd') Items(Cd)
मैं निम्नलिखित परिणाम प्राप्त:
1000000 2000 123456
1000000 2000 234567
1200000 3000 234567
1200000 3000 345678
मैं गलत क्या कर रहा हूँ:
NULL NULL 123456
NULL NULL 234567
NULL NULL 234567
NULL NULL 345678
मैं निम्नलिखित प्राप्त करने के लिए कोशिश कर रहा हूँ
मैं निम्नलिखित है ?
आसानी से परीक्षण योग्य/प्रतिलिपि प्रस्तुत करने योग्य उदाहरण मार्गदर्शन और बाहरी लिंक के लिए –