【发布时间】:2017-02-03 17:04:56
【问题描述】:
我正在尝试在 SQL Server 中使用“FOR XML”功能。我正在使用 SQL Server 2008 Express。我需要 SQL Server 的 XML 结果。
我有两个表,dbo.document 和 dbo.items。
样本数据:
第一个表[文档]:
ID info1 info2
------- ---- -----
1 11 22
第二张表【物品】:
ID nvarchar1 nvarchar2 nvarchar3 docId
------- ---- ---- ---- ----
1 d e f 1
2 dd ee ff 1
基于Create single XML from SQL Server multiple tables query、Get nested XML output sql server和SQL Server “FOR XML” output from queries joining two tables 我的代码是:
SELECT TOP (1)Document.info1, Document.info2,
(SELECT TOP (3)
nvarchar1,
nvarchar2,
nvarchar3
FROM Items
WHERE Items.docId = Document.id
FOR XML PATH ('myitem'), TYPE)
FROM Document
order by id desc
FOR XML PATH ('List'), ROOT ('myroot')
结果是:
<myroot>
<List>
<info1>11</info1>
<info2>22</info2>
<myitem>
<nvarchar1>d</nvarchar1>
<nvarchar2>e</nvarchar2>
<nvarchar3>f</nvarchar3>
</myitem>
<myitem>
<nvarchar1>dd</nvarchar1>
<nvarchar2>ee</nvarchar2>
<nvarchar3>ff</nvarchar3>
</myitem>
</List>
</myroot>
但我想要以下格式的 xml:(在 myroot 之后直接插入元素 info1、info2)
<myroot>
<info1>11</info1>
<info2>22</info2>
<List>
<myitem>
<nvarchar1>d</nvarchar1>
<nvarchar2>e</nvarchar2>
<nvarchar3>f</nvarchar3>
</myitem>
<myitem>
<nvarchar1>dd</nvarchar1>
<nvarchar2>ee</nvarchar2>
<nvarchar3>ff</nvarchar3>
</myitem>
</List>
</myroot>
有人对此案有任何解决方案吗?非常感谢。
注意:下一个变体:info1,info 2 将存储在第三个表中。
【问题讨论】:
标签: sql-server xml sql-server-2008 nested output