以下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>
,因为Id
(a
)是相同的? (如果可能的话,不使用子查询就可以这样做吗?)预期,
<ROOT>
<X>
<A Id="1">
<b>2</b>
<b>3</b>
</A>
</X>
</ROOT>
答案 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')