从 SQL Server 2008 生成 xml

Generating xml from SQL Server 2008

对于给定的索赔,我有 3 个诊断代码。当前,在从 SQL 服务器生成 xml 时,我为每个诊断代码获得 3 个分支,其中一个具有相同的声明 ID,如下面的输出所示。但我需要一个出路,以便所有 3 个诊断代码都可以与相关的索赔 ID 结合并生成所需的结果片段。

Select 语句是:

select * 
from sandbox.dbo.testing 
WHERE claimID = 20
FOR XML auto,ELEMENTS   

输出为

claimID diagnosis
20  v234
20  v24
20  v256

生成的XML是:

<sandbox.dbo.testing>
   <claimID>20</claimID>
   <diagnosis>v234</diagnosis>
</sandbox.dbo.testing>
<sandbox.dbo.testing>
   <claimID>20</claimID>
   <diagnosis>v24</diagnosis>
</sandbox.dbo.testing>
<sandbox.dbo.testing>
   <claimID>20</claimID>
   <diagnosis>v256</diagnosis>
</sandbox.dbo.testing>

但需要以下形式的结果

<sandbox.dbo.testing>
   <claimID>20</claimID>
   <diagnosis>v234</diagnosis>
   <diagnosis>v24</diagnosis>
   <diagnosis>v256</diagnosis>
</sandbox.dbo.testing>

使用Xml Path()Root

SELECT *
FROM   sandbox.dbo.testing
WHERE  claimID = 20
FOR xml path(''), root('sandbox.dbo.testing') 

在子查询和硬编码中获取行,或者在主查询中使用参数作为 claimID。

select 20 as claimID,
       (
       select diagnosis 
       from sandbox.dbo.testing
       where claimID = 20
       for xml path(''), type
       )
for xml path('sandbox.dbo.testing')