/ / Як запобігти SQL Server об'єднувати результати XML з тим самим ім'ям - sql-server, xml, tsql

Як запобігти SQL Server об'єднувати результати XML з однаковим ім'ям - sql-server, xml, tsql

Я намагаюся створити документ XML за допомогоюXML-функції в SQL 2008, але я випускаю проблему, де для цього документа потрібні два вузли, що мають однакове ім'я, але SQL Server автоматично об'єднує будь-які вузли з тим самим ім'ям.

Наприклад:

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

Проблема полягає в тому, що я намагаюся це зробити, виконуючи SQL нижче, я отримую:

<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")