1

我正在尝试使用 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>

这可能吗?如果可以,怎么做?

4

1 回答 1

1

我想我找到了解决办法。刚刚在表中添加了另一列以进入 TAG 1(父级)但具有不同的值。然后在 ORDER BY 我按该列排序,然后是“数字”

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

似乎可以解决问题:)

于 2017-02-08T20:33:28.073 回答