Come posso ottenere Sql Server 2K8 R2 restituire questo xml senza ricorrere alla modalità di compatibilità
-
27-09-2019 - |
Domanda
Siamo in procinto di aggiornare il nostro server SQL per 2K8 R2 e l'uscita di una query FOR XML AUTO è cambiato.
L'interrogazione uscite colonne da tre tabelle
Il gruppo di risultati restituisce tre righe che ogni colonna è identico bar ultime due colonne della terza tabella. i risultati usati per mostrare come di seguito
<element1 myval="Test">
<element2 myotherval="atest">
<element3 a="a"/>
<element3 a="b"/>
<element3 a="c" />
</element2>
</element1>
Non show
<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>
Ho cercato di utilizzare per XML Path ma restituisce comunque 3 istanze separate di elemento1 piuttosto che il raggruppamento dei dati.
Soluzione
Se si desidera una sottostruttura utilizzando FOR XML PATH, dovrete scrivere subquery per ogni sotto-albero. Quindi nel tuo caso si dispone di una select padre per elemento1, e una delle colonne di una sottoquery che ottiene tutto ciò che ha bisogno di essere in element2 (che a sua volta può essere anche sottoquery). Se si utilizza subquery e si desidera XML restituito da quelli, uso
per il percorso XML ( 'elementN'), TIPO
o che sarà sfuggire il codice XML.