Du kan göra något sånt här. Istället för att omedelbart skicka XML-värdet till en sträng använder den här frågan nyckelordet TYPE för att returnera ett objekt av typen xml som sedan kan frågas. De tre frågefunktionerna söker i xml-objektet efter alla instanser av Somefield-elementet och returnerar ett nytt xml-objekt som bara innehåller dessa värden. Sedan tar värdefunktionen bort xml-taggarna som omger värdena och skickar dem till en 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]