Wie kann ich SQL Server 2K8 R2 erhalten diese xml zurückzukehren, ohne zu Kompatibilitätsmodus zurückgreifen
-
27-09-2019 - |
Frage
Wir sind dabei, unsere SQL Server 2K8 R2 aktualisieren und die Ausgabe einer FOR XML AUTO Abfrage geändert hat.
Die Abfrage gibt Spalten aus drei Tabellen
Die resultset gibt drei Reihen, die jede Spalte die letzten zwei Spalten aus der dritten Tabelle identisch bar sind. die wie unten
zeigen, verwendet, um Ergebnisse<element1 myval="Test">
<element2 myotherval="atest">
<element3 a="a"/>
<element3 a="b"/>
<element3 a="c" />
</element2>
</element1>
es nicht zeigt
<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>
Ich habe versucht, für XML-Pfad zu verwenden, aber es gibt noch drei separate Instanzen von element1 anstatt die Daten zu gruppieren.
Lösung
Wenn Sie einen Teilbaum mit FOR XML PATH möchten, müssen Sie Unterabfragen für jeden Unterbaum schreiben. Also in Ihrem Fall haben Sie eine übergeordnete select-Anweisung für element1, und eine der Spalten ist eine Unterabfrage, die bekommt, was in element2 sein muss (was wiederum auch Subqueries sein). Wenn Sie Unterabfragen und Sie XML von denen zurückgegeben werden sollen, verwenden Sie
FOR XML PATH ( 'elementN'), TYPE
oder es wird den XML-Code entkommen.