选择结果集的几列作为XML

时间:2012-04-27 20:10:54

标签: xml tsql sql-server-2008-r2

我有一个简单的SELECT语句,它从一个表中选择几列:

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。但是,我只查找要转换的部分列。有可能吗?

1 个答案:

答案 0 :(得分: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