Как я могу заставить Sql Server 2K8 R2 возвращать этот xml, не прибегая к режиму совместимости - PullRequest
1 голос
/ 09 августа 2010

Мы находимся в процессе обновления нашего сервера sql до 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 Ответ

1 голос
/ 09 августа 2010

Если вы хотите, чтобы поддерево использовало FOR XML PATH, вам придется писать подзапросы для каждого поддерева.Так что в вашем случае у вас есть родительский оператор выбора для element1, и один из столбцов является подзапросом, который получает все, что должно быть в element2 (что, в свою очередь, также может быть подзапросом).Если вы используете подзапросы и хотите, чтобы XML возвращался из них, используйте

FOR XML PATH ('elementN'), TYPE

, иначе он будет экранировать код XML.

...