Fügen Sie eine Spalte mit NULL als Wert hinzu, um einen separaten Elementknoten für jede Spalte zu generieren.
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;
Ergebnis:
<parent>
<item>1</item>
<item>2</item>
<item>3</item>
</parent>
SQL-Fiddle
Warum funktioniert das?
Spalten ohne Namen werden als Textknoten eingefügt. In diesem Fall wird der NULL-Wert als Textknoten zwischen item
eingefügt Knoten.
Wenn Sie anstelle von NULL tatsächliche Werte hinzufügen, sehen Sie, was passiert.
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;
Ergebnis:
<parent>
<item>1</item>1<item>2</item>2<item>3</item></parent>
Eine andere Möglichkeit, eine Spalte ohne Namen anzugeben, ist die Verwendung des Platzhalterzeichens *
als Spaltenalias.
Spalten mit einem als Platzhalterzeichen angegebenen Namen
Es ist in diesem Fall nicht erforderlich, den Platzhalter zu verwenden, da die Spalten mit NULL-Werten keinen Spaltennamen haben, aber es ist nützlich, wenn Sie Werte aus tatsächlichen Spalten möchten, aber nicht möchten, dass der Spaltenname ein Knotenname ist.