Lägg till en kolumn med NULL som värde för att generera en separat objektnod för varje kolumn.
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
Varför fungerar det här?
Kolumner utan namn infogas som textnoder. I det här fallet infogas NULL-värdet som en textnod mellan item
noder.
Om du lägger till faktiska värden istället för NULL kommer du att se vad som händer.
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>
Ett annat sätt att ange en kolumn utan namn är att använda jokertecknet *
som kolumnalias.
Kolumner med ett namn specificerat som jokertecken
Det är inte nödvändigt att använda jokertecken i det här fallet eftersom kolumnerna med NULL-värden inte har ett kolumnnamn men det är användbart när du vill ha värden från faktiska kolumner men du inte vill att kolumnnamnet ska vara ett nodnamn.