Sie könnten so etwas tun. Anstatt den XML-Wert sofort an eine Zeichenfolge zu senden, verwendet diese Abfrage das Schlüsselwort TYPE, um ein Objekt vom Typ xml zurückzugeben, das dann abgefragt werden kann. Die drei Abfragefunktionen durchsuchen das XML-Objekt nach allen Instanzen des Somefield-Elements und geben ein neues XML-Objekt zurück, das nur diese Werte enthält. Dann entfernt die Wertfunktion die XML-Tags, die die Werte umgeben, und übergibt sie an ein varchar(max)
SELECT ThisTable.ID
,[A].query('/Somefield').value('/', 'varchar(max)') AS [SomeField_Combined]
,[A].query('/Somefield2').value('/', 'varchar(max)') AS [SomeField2_Combined]
,[A].query('/Somefield3').value('/', 'varchar(max)') AS [SomeField3_Combined]
FROM ThisTable
OUTER APPLY (
SELECT (
SELECT SomeField + ' ' AS [SomeField]
,SomeField2 + ' ' AS [SomeField2]
,SomeField3 + ' ' AS [SomeField3]
FROM SomeTable
WHERE SomeTable.ID = ThisTable.ID
FOR
XML PATH('')
,TYPE
) AS [A]
) [A]