由另一个元素组元素?

时间:2015-01-28 22:39:46

标签: xml sql-server-2008 sql-server-2005

以下SQL

with t(a, b) as (select 1, 2 union all select 1, 3)
select  t.a as 'X/A/@Id',
        t.b as 'X/A/b'
from    t
for xml path(''), root('ROOT')

返回

<ROOT>
  <X>
    <A Id="1">
      <b>2</b>
    </A>
  </X>
  <X>
    <A Id="1">
      <b>3</b>
    </A>
  </X>
</ROOT>

是否可以将<b>分组为<a>,因为Ida)是相同的? (如果可能的话,不使用子查询就可以这样做吗?)预期,

<ROOT>
  <X>
    <A Id="1">
      <b>2</b>
      <b>3</b>
    </A>
  </X>
</ROOT>

1 个答案:

答案 0 :(得分:0)

您需要选择外部查询中的第一列和内部查询中的第二列,然后选择GROUP BY第一列。

;with t(a, b) as 
(
    select 1, 2 
    union all 
    select 1, 3
)
select t1.a as 'X/A/@Id',
(
    SELECT T.B FROM T 
    WHERE T.a=t1.a
    FOR XML PATH(''), type
)as 'X/A'
from    t t1
group by t1.a
for xml path(''), root('ROOT')