Comment puis-je obtenir Sql Server 2K8 R2 retourner ce xml sans avoir recours au mode de compatibilité

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

  •  27-09-2019
  •  | 
  •  

Question

Nous sommes en train de mettre à niveau notre serveur SQL 2K8 R2 et la sortie d'une requête FOR XML AUTO a changé.

Les colonnes de la requête de trois tables

Le jeu de résultats renvoie trois rangées dont chaque colonne est identique bar les deux dernières colonnes de la troisième table. les résultats utilisés pour montrer comme ci-dessous

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

montre pas

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

J'ai essayé d'utiliser pour XML Path mais il retourne toujours 3 instances distinctes de element1 plutôt que de regrouper les données.

Était-ce utile?

La solution

Si vous voulez un sous-arbre à l'aide pour le chemin XML, vous devez écrire les sous-requêtes pour chaque sous-arbre. Donc, dans votre cas, vous avez une instruction select parent pour element1, et l'une des colonnes est une sous-requête qui obtient tout ce qui doit être element2 (qui peut aussi être sous-requêtes). Si vous utilisez les sous-requêtes et que vous voulez XML retour de ceux-ci, l'utilisation

  

XML PATH ( 'elementN'), TYPE

ou il va échapper au code XML.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top