2012-04-27 37 views
1

我有一個簡單SELECT聲明,從單一的表中選擇幾列:選擇結果的幾列設置爲XML

SELECT id, name, phone, address 
FROM tmp_user 

是否有可能因此只有idname在選擇更改此查詢剩下的細節是在一個XML節點?

我預計今年選擇的輸出應該

id name  extra data 
1 Shreedhar <data><phone>...</phone><address>...</address></data> 
2 John Doe <data><phone>...</phone><address>...</address></data> 
3 Jane Doe <data><phone>...</phone><address>...</address></data> 

最後一列是返回表的應該是XML類型與所需的數據。我知道如何使用FOR XML將整個結果集轉換爲XML。不過,我只查看要轉換的列的一部分。可能嗎?

+0

您能否提供DML和測試數據? – 2012-04-28 11:15:18

回答

1

當然!沒問題 - 嘗試這樣的:

SELECT 
    id, name, 
    (SELECT phone, address 
    FROM dbo.tmp_user u2 
    WHERE u2.id = u1.id 
    FOR XML PATH('data')) AS 'ExtraData' 
FROM  
    dbo.tmp_user u1 

這給了我一個輸出非常像你正在尋找的。

enter image description here

+2

整潔,按需要工作。爲什麼我自己沒有想到這一點:( – 2012-05-03 20:25:20

+0

並感謝編輯這個問題編輯非常好 – 2012-05-03 20:27:47

+0

我還需要給xml添加命名空間,比如 ......

...
沒有人有想法怎麼辦呢?既然選擇語句嵌套,我不能XMLNAMESPACES使用。 – rageit 2014-04-25 14:25:44