Я намагаюся створити документ 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 для відповіді № 1WITH 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")