从SQL Server 2008生成xml

时间:2015-01-11 21:31:47

标签: sql-server xml sql-server-2008 stored-procedures

对于给定的声明,我有3个诊断代码。目前,当从SQL Server生成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>

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

使用Xml Path()Root

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