如何让 Sql Server 2K8 R2 返回此 xml 而不诉诸兼容模式
我们正在将 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,但它仍然返回 element1 的 3 个单独的实例,而不是对数据进行分组。
We are in the process of upgrading our sql server to 2K8 R2 and the output of a FOR XML AUTO query has changed.
The query outputs columns from three tables
The resultset returns three rows which each column is identical bar the last two columns from the third table. the results used to show as below
<element1 myval="Test">
<element2 myotherval="atest">
<element3 a="a"/>
<element3 a="b"/>
<element3 a="c" />
</element2>
</element1>
it not shows
<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>
I have been trying to use For XML Path but it still returns 3 separate instances of element1 rather than grouping the data.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您想要使用 FOR XML PATH 的子树,则必须为每个子树编写子查询。因此,在您的情况下,您有一个 element1 的父 select 语句,其中一列是一个子查询,它获取 element2 中需要的任何内容(反过来也可以是子查询)。如果您使用子查询并且希望从子查询中返回 XML,请使用
否则它将转义 XML 代码。
If you want a subtree using FOR XML PATH, you'll have to write subqueries for each subtree. So in your case you have a parent select statement for element1, and one of the columns is a subquery that gets whatever needs to be in element2 (which in turn can also be subqueries). If you use subqueries and you want XML returned from those, use
or it'll escape the XML code.