2017-10-29 3 views
0

Ich mag generieren XML-Daten in folgendem Format erzeugen, ?Wie XML-Tag für Wert

;with cte(animal,name) 
as 
(
    select 'dog','spot' union 
    select 'cat','tom' 
) 
select 
    animal 
    ,name 
from cte 
for xml path(animal),root('pets') 
+0

Wenn die Werte kennen (zB Hunde und Katzen immer) Sie eine Pivot tun könnte, zu erhalten die Spaltennamen "Hund" und "Katze". Ansonsten könntest du etwas wie 'cast ('<' + tier + '>' + name + '' als xml) machen' – ZLK

+0

Danke -; mit cte (tier, name) wie ( \t 'Hund' wählen, 'vor Ort' Vereinigung \t 'cat' auswählen, 'tom' ) \t cast ('<'+animal+'> '+' '+ name +' '+'' als xML wählen) von cte für xml Pfad (''), root ('Haustiere') – user3535647

Antwort

1

den nächsten Code verwenden: -

SELECT ( 
SELECT 'spot' AS name 
FOR 
XML PATH('dog'), 
TYPE 
), 
(SELECT 'tom' AS name 
FOR 
XML PATH('cat'), 
TYPE 
) 
FOR XML PATH(''), 
ROOT('Pets') 
GO 

Ergebnis: -

<Pets> 
    <dog> 
    <name>spot</name> 
    </dog> 
    <cat> 
    <name>tom</name> 
    </cat> 
</Pets> 
+0

Das ist großartig, wenn es nur zwei Datensätze war. Ich könnte jeden Datensatz durchlaufen und dynamisch jede Zeile erstellen, aber das scheint ziemlich Naff. Noch mehr Vorschläge? – user3535647