如何让 Sql Server 2K8 R2 返回此 xml 而不诉诸兼容模式

发布于 2024-09-13 15:57:07 字数 969 浏览 5 评论 0原文

我们正在将 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

萌酱 2024-09-20 15:57:07

如果您想要使用 FOR XML PATH 的子树,则必须为每个子树编写子查询。因此,在您的情况下,您有一个 element1 的父 select 语句,其中一列是一个子查询,它获取 element2 中需要的任何内容(反过来也可以是子查询)。如果您使用子查询并且希望从子查询中返回 XML,请使用

对于 XML 路径('elementN'),类型

否则它将转义 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

FOR XML PATH('elementN'), TYPE

or it'll escape the XML code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文