/ / Come impedire a SQL Server di concatenare i risultati XML con lo stesso nome: sql-server, xml, tsql

Come impedire a SQL Server di concatenare i risultati XML con lo stesso nome: sql-server, xml, tsql

Sto cercando di generare un documento XML usando ilFunzionalità XML in SQL 2008 ma sto eseguendo un problema in cui il documento richiede due nodi per avere lo stesso nome, ma SQL Server concatena automaticamente tutti i nodi con lo stesso nome.

Per esempio:

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

Il problema è quando provo a farlo eseguendo l'SQL qui sotto:

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

Ecco come seleziono i dati:

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

Pur avendo selezionato un altro nodo tra i due campi di indirizzo, quello che cerco è che devo essere in grado di mantenere insieme i due nodi di indirizzo.

risposte:

3 per risposta № 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")