Como posso fazer com que o Sql Server 2K8 R2 retorne esse xml sem recorrer ao modo de compatibilidade

StackOverflow https://stackoverflow.com/questions/3439007

  •  27-09-2019
  •  | 
  •  

Pergunta

Estamos no processo de atualização de nosso servidor sql para 2K8 R2 e a saída de uma consulta FOR XML AUTO foi alterada.

A consulta gera colunas de três tabelas

O conjunto de resultados retorna três linhas em que cada coluna é idêntica, exceto as duas últimas colunas da terceira tabela.os resultados usados ​​para mostrar como abaixo

<element1 myval="Test">
    <element2 myotherval="atest">
         <element3 a="a"/>
         <element3 a="b"/>
         <element3 a="c" />
    </element2>
</element1>

não mostra

    <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>

Tenho tentado usar For XML Path, mas ele ainda retorna 3 instâncias separadas de element1 em vez de agrupar os dados.

Foi útil?

Solução

Se você quiser uma subárvore usando FOR XML PATH, você terá que escrever subconsultas para cada subárvore.Portanto, no seu caso, você tem uma instrução select pai para o elemento1, e uma das colunas é uma subconsulta que obtém o que precisa estar no elemento2 (que por sua vez também pode ser subconsultas).Se você usar subconsultas e quiser que o XML seja retornado delas, use

PARA CAMINHO XML('elementoN'), TIPO

ou escapará do código XML.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top