我尝试使用FOR XML EXPLICIT从SQL创建XML输出。它必须是XML EXPLICIT,因为我使用的是不同的数据库,但是,此示例使用的是SQL Server。
我已经为这个问题宣布了一个简单的表@table。它有2列(字母,数字)和3行。表定义:
declare @table table (letter varchar(1), number int);
insert into @table values ('A',1),('A',2),('A',3)
我的查询是:
select 1 as tag, null as parent,
letter as [letter!1!value],
null as [number!2]
from @table
union all
select 2 as tag, 1 as parent,
letter,number
from @table
for xml explicit
以下是我理解的结果,因为"字母"中的值。列是相同的:
<letter value="A" />
<letter value="A" />
<letter value="A">
<number>1</number>
<number>2</number>
<number>3</number>
</letter>
但是,我需要输出的是:
<letter value="A">
<number>1</number>
</letter>
<letter value="A">
<number>2</number>
</letter>
<letter value="A">
<number>3</number>
</letter>
这可能吗?如果可以,怎么做?
答案 0 :(得分:1)
我想我找到了解决方案。刚刚在表格中添加了另一列以进入TAG 1(父级)但具有不同的值。然后在我按该列排序的ORDER BY中,然后是&#34; number&#34;
declare @table table (letter varchar(1), id int, number int);
insert into @table values ('A',1,1),('A',2,2),('A',3,3)
select 1 as tag, null as parent,
letter as [letter!1!value],
id as [letter!1!values!hide],
null as [number!2]
from @table
union all
select 2 as tag, 1 as parent,
letter,id,number
from @table
order by [letter!1!values!hide],[number!2]
for xml explicit
似乎可以做到这一点:)