Wie kann ich mit der xml-Darstellung nach Zeilen abfragen?

Ich brauche so etwas wie

select * from tb_listings for xml auto 

Aber ich brauche jede Zeile, um getrennt zu sein, und nicht ein großes XML-Dokument.

Ich habe so etwas wie folgt ausprobiert:

 select id, (select * from tb_listings a where a.id=id for xml auto) as xmldata from tb_listings 

Die erwartete Ausgabe ist wie folgt:

 id xmldata ------------------------------------------------------------ 1 <listing><name>ABC</name><xyz>123</xyz></listing> 

Aber es scheint nicht zu tun, was ich will und es dauert auch sehr lange zu laufen.

Irgendwelche Ideen würden geschätzt. 🙂

Bearbeiten: Ausgestellt:

 select id, (select top 1 * from tb_listings a where a.id=b.id for xml auto) from tb_listings b 

Schließen.

Versuche so etwas:

 DECLARE @YourTable table (PK1 int, c1 int, c2 varchar(5), c3 datetime) INSERT INTO @YourTable VALUES (1,2,'abcde','1/1/2009') INSERT INTO @YourTable VALUES (100,200,'zzz','12/31/2009 23:59:59') --list all columns in xml format SELECT t2.PK1 --optional, can remove this column from the result set and just get the XML ,(SELECT * FROM @YourTable t1 WHERE t1.PK1= t2.PK1 FOR XML PATH('YourTable'), TYPE ) as Row FROM @YourTable t2 

AUSGABE:

 PK1 Row ----------- ------------------------------------------------------------------------------------------ 1 <YourTable><PK1>1</PK1><c1>2</c1><c2>abcde</c2><c3>2009-01-01T00:00:00</c3></YourTable> 100 <YourTable><PK1>100</PK1><c1>200</c1><c2>zzz</c2><c3>2009-12-31T23:59:59</c3></YourTable> (2 row(s) affected)