/ / मैं SQL सर्वर को समान नाम के साथ XML परिणामों को जोड़ने से कैसे रोकूं - sql-server, xml, tsql

मैं SQL सर्वर को समान नाम के साथ XML परिणामों को संयोजित करने से कैसे रोकूं - sql-server, xml, tsql

मैं इसका उपयोग कर एक एक्सएमएल दस्तावेज उत्पन्न करने की कोशिश कर रहा हूंएसक्यूएल 2008 में एक्सएमएल फीचर्स लेकिन मैं एक ऐसे मुद्दे पर चल रहा हूं जहां दस्तावेज़ को दो नोड्स के समान नाम होने की आवश्यकता है लेकिन SQL सर्वर स्वचालित रूप से उसी नाम के साथ किसी भी नोड्स को जोड़ता है।

उदाहरण के लिए:

<Location>
<Address>Some Street</Address>
<Address>Some other info</Address>
</Location>

समस्या यह है कि जब मैं नीचे दिए गए एसक्यूएल को निष्पादित करके ऐसा करने का प्रयास करता हूं तो मुझे मिलता है:

<Location>
<Address>Some StreetSome other info</Address>
</Location>

यहां मैं डेटा का चयन कैसे कर रहा हूं:

 SELECT CustomerStreet1 AS "location/address",
CustomerStreet2 AS "location/address"
FROM Customers
FOR XML PATH("Customer")

जबकि दो पता फ़ील्ड के बीच में एक और नोड चुना गया है, जो मैं देख रहा हूं, मुझे दो एड्रेस नोड्स को एक साथ रखने में सक्षम होना चाहिए।

उत्तर:

जवाब के लिए 3 № 1
WITH    customers (id, CustomerStreet1, CustomerStreet2) AS
(
SELECT  1, "Some Street", "Some other info"
UNION ALL
SELECT  2, "Second Street", NULL
)
SELECT  id,
(
SELECT  *
FROM    (
SELECT  CustomerStreet1 AS Address
UNION ALL
SELECT  CustomerStreet2
) q
FOR XML PATH(""), TYPE
)
FROM    customers
FOR XML PATH("Customers")