2016-05-20 9 views
0

Ich habe zwei Tabellen Customer und Address. Ich möchte im Grunde die Ergebnismenge zurück wieSQL Server XML Ergebnis

CustomerID Name LastName AddressList 
-------------------------------------------------- 
    1  ABC DEF  <AddressList><address><line1>XXX</line1></address><address><line1>XXX</line1></address> 

in der Lage sein, eine XML für alle verknüpften Adressen erstellen und als eine Säule zurück.

I FOR XML PATH (' ') auf Adresse verwenden, aber ich bin immer 2 Zeilen zurück mit Adresse als XML in jeder Zeile. Ich möchte nur 1 Zeile mit beiden Adressen

Hier ist meine sql

SELECT 
    c.customerId, 
    c.Name, 
    c.LastName, 
    (SELECT a.* FOR XML PATH('')) 
FROM 
    Customer c 
JOIN 
    Address a ON c.CustomerId = a.CustomerId 

Antwort

0

ich so etwas wie diese verwenden würde.

SELECT 
     c.customerId, 
     c.Name, 
     c.LastName,  
     CAST( 
      (SELECT a.* 
      FROM Address a 
      WHERE c.CustomerId = a.CustomerId 
      FOR XML PATH(''), ROOT('AddressList')) 
      AS xml) as AddressList 
FROM Customer c 
group by c.customerId, /*you can ignore group by if you don't have duplicates*/ 
c.Name, 
c.LastName;