Voeg een kolom toe met NULL als waarde om voor elke kolom een apart itemknooppunt te genereren.
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;
Resultaat:
<parent>
<item>1</item>
<item>2</item>
<item>3</item>
</parent>
SQL Fiddle
Waarom werkt dit?
Kolommen zonder naam worden ingevoegd als tekstknooppunten. In dit geval wordt de NULL-waarde ingevoegd als een tekstknooppunt tussen het item
knooppunten.
Als u werkelijke waarden toevoegt in plaats van NULL, ziet u wat er gebeurt.
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;
Resultaat:
<parent>
<item>1</item>1<item>2</item>2<item>3</item></parent>
Een andere manier om een kolom zonder naam op te geven, is door het jokerteken *
. te gebruiken als een kolomalias.
Kolommen met een naam gespecificeerd als jokerteken
Het is in dit geval niet nodig om het jokerteken te gebruiken omdat de kolommen met NULL-waarden geen kolomnaam hebben, maar het is handig wanneer u waarden uit werkelijke kolommen wilt, maar niet wilt dat de kolomnaam een knooppuntnaam is.