我的查询结构如下
select t1.Col1
,t1.Col2
,(
select t2.Col1
,t2.Col2
from #t2 t2
where t1.Col1 = t2.Col1
for xml path ('Path1'), root('RootPath1'),Type
)
from #t1 t1
for xml path ('Path2')
我想将它与另一个查询结合起来,以便结构如下:
select t1.Col1
,t1.Col2
,(
select t2.Col1
,t2.Col2
from #t2 t2
where t1.Col1 = t2.Col1
for xml path ('Path1'), root('RootPath1'),Type
)
from #t1 t1
for xml path ('Path2')
union
select t1.Col11
,t1.Col22
,(
select t22.Col11
,t22.Col22
from #t22 t22
where t11.Col11 = t22.Col11
for xml path ('Path11'), root('RootPath11'),Type
)
from #t11 t11
for xml path ('Path22')
我该怎么做?简单union
返回错误。
我尝试将两个查询合并为一个xml,我希望xml如下:
<Path2>
<RootPath1>
<Path1>
<Col1></Col1>
<Col2></Col2>
</Path1>
</RootPath1>
</Path2>
<Path22>
<RootPath11>
<Path11>
<Col11></Col11>
<Col22></Col22>
</Path11>
</RootPath11>
</Path22>
答案 0 :(得分:1)
您可以尝试使用2个XML变量和另一个FOR XML
来组合它们,如下所示:
declare @path2 XML = (select t1.Col1
,t1.Col2
,(
select t2.Col1
,t2.Col2
from #t2 t2
where t1.Col1 = t2.Col1
for xml path ('Path1'), root('RootPath1'),Type
)
from #t1 t1
for xml path ('Path2'))
declare @path22 XML = (select t1.Col11
,t1.Col22
,(
select t22.Col11
,t22.Col22
from #t22 t22
where t11.Col11 = t22.Col11
for xml path ('Path11'), root('RootPath11'),Type
)
from #t11 t11
for xml path ('Path22'))
select @path2, @path22
for xml path('')