2010-01-27 76 views
3

我正嘗試使用SQL 2008中的XML功能生成XML文檔,但我遇到了文檔需要兩個節點具有相同名稱的問題名稱,但SQL Server會自動連接具有相同名稱的任何節點。如何防止SQL Server連接具有相同名稱的XML結果

例如:

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

雖然在兩個地址字段之間選擇了另一個節點,但是我正在尋找我需要的能夠將兩個地址節點保持在一起。

+0

輸出結合列數據的原因是因爲列別名是相同的。 – 2010-01-27 17:17:05

回答

3
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') 
+0

謝謝,這正是我正在尋找的。 – Horn 2010-01-27 17:25:34

相關問題