如何在不诉诸兼容模式的情况下让Sql Server 2K8 R2返回此xml

时间:2010-08-09 10:12:19

标签: sql-server for-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但它仍然返回3个不同的element1实例,而不是对数据进行分组。

1 个答案:

答案 0 :(得分:1)

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

  

FOR XML PATH('elementN'),TYPE

或者它将逃脱XML代码。