Tilføj en kolonne med NULL som værdi for at generere en separat vareknude for hver kolonne.
SELECT
t.col1 as 'item'
,NULL
,t.col2 as 'item'
,NULL
,t.col3 as 'item'
FROM dbo.tbl as t
FOR XML PATH('parent'), TYPE;
Resultat:
<parent>
<item>1</item>
<item>2</item>
<item>3</item>
</parent>
SQL Fiddle
Hvorfor virker dette?
Kolonner uden navn indsættes som tekstnoder. I dette tilfælde er NULL-værdien indsat som en tekstnode mellem item
noder.
Hvis du tilføjer faktiske værdier i stedet for NULL, vil du se, hvad der sker.
SELECT
t.col1 as 'item'
,'1'
,t.col2 as 'item'
,'2'
,t.col3 as 'item'
FROM dbo.tbl as t
FOR XML PATH('parent'), TYPE;
Resultat:
<parent>
<item>1</item>1<item>2</item>2<item>3</item></parent>
En anden måde at angive en kolonne uden et navn på er at bruge jokertegnet *
som et kolonnealias.
Kolonner med et navn angivet som et jokertegn
Det er ikke nødvendigt at bruge jokertegnet i dette tilfælde, fordi kolonnerne med NULL-værdier ikke har et kolonnenavn, men det er nyttigt, når du vil have værdier fra faktiske kolonner, men du ikke ønsker, at kolonnenavnet skal være et nodenavn.