Sql server 如何通过sql查询嵌套xml

Sql server 如何通过sql查询嵌套xml,sql-server,xml,sql-server-2005,Sql Server,Xml,Sql Server 2005,我试图生成如下所示的xml: <caption nr="1000"> <lang code="EN">Brussels</lang> <lang code="FR">Bruxelles</lang> </caption> <caption nr="2000"> <lang code="EN">Antwerp</lang> <lang code="FR"

我试图生成如下所示的xml:

<caption nr="1000">
    <lang code="EN">Brussels</lang>
    <lang code="FR">Bruxelles</lang>
</caption>
<caption nr="2000">
    <lang code="EN">Antwerp</lang>
    <lang code="FR">Anvers</lang>
</caption>
我用GROUPBY语句、子查询、distintc等尝试了许多sql查询。。。我只是不能把我的头绕在它周围

这是我能得到的最好的可行的解决方案。但这不是我想要的,因为我必须制作一个新的XSD

<lang cap="1000" code="FR">BRUXELLES</lang>
<lang cap="1000" code="EN">BRUSSELS</lang>
<lang cap="2000" code="FR">ANVERS</lang>
<lang cap="2000" code="EN">ANTWERP</lang>
有人建议如何解决这个问题吗?

在fld\u pcd\u cod上获取带有group by的captionnode,并在相关子查询中获取lang

选择T1.fld\U pcd\U cod作为@nr, 选择T2.fld_pcd_tal作为@code, T2.fld_pcd_宝石组件* 来自tbl_pcd作为T2 其中T1.fld_pcd_cod=T2.fld_pcd_cod 对于xml路径“lang”,键入 来自tbl_pcd作为T1 按T1.fld\U pcd\U cod分组 用于xml路径“标题”
<lang cap="1000" code="FR">BRUXELLES</lang>
<lang cap="1000" code="EN">BRUSSELS</lang>
<lang cap="2000" code="FR">ANVERS</lang>
<lang cap="2000" code="EN">ANTWERP</lang>
SELECT fld_pcd_cod as 'lang/@cap', fld_pcd_tal as 'lang/@code', fld_pcd_gem as 'lang'
FROM tbl_pcd
for XML path(''), type