我们正在将sql server升级到2K8 R2并且FOR XML AUTO查询的输出已更改。
查询输出三个表中的列
结果集返回三行,每列与第三个表中的最后两列相同。结果用于显示如下
<element1 myval="Test">
<element2 myotherval="atest">
<element3 a="a"/>
<element3 a="b"/>
<element3 a="c" />
</element2>
</element1>
它没有显示
<element1 myval="Test">
<element2 myotherval="atest">
<element3 a="a"/>
</element2>
</element1>
<element1 myval="Test">
<element2 myotherval="atest">
<element3 a="B"/>
</element2>
</element1>
<element1 myval="Test">
<element2 myotherval="atest">
<element3 a="C"/>
</element2>
</element1>
我一直在尝试使用For XML Path但它仍然返回3个不同的element1实例,而不是对数据进行分组。
答案 0 :(得分:1)
如果您想要使用FOR XML PATH的子树,则必须为每个子树编写子查询。因此,在您的情况下,您有一个父元素的select语句,其中一个列是一个子查询,它可以获取element2中的任何内容(反过来也可以是子查询)。如果您使用子查询并且希望从这些子查询返回XML,请使用
FOR XML PATH('elementN'),TYPE
或者它将逃脱XML代码。