2016-05-20 6 views
0

私は2つのテーブルCustomerAddressを持っています。私は、リンクされたすべてのアドレスのためのXMLを作成し、列として返す、基本的にSQL ServerのXML結果

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

のような結果セットを返すことができるようにしたいです。

私はアドレスにFOR XML PATH (' ')を使用していますが、各行にXMLとしてアドレスが2行戻っています。私は両方のアドレス

を持つ唯一の1行は、ここで私はこのようなものを使用することになり、私のSQL

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

答えて

0

ですたいです。

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; 
関連する問題