Potresti fare qualcosa del genere. Invece di inviare immediatamente il valore XML a una stringa, questa query utilizza la parola chiave TYPE per restituire un oggetto di tipo xml che può quindi essere interrogato. Le tre funzioni di query cercano nell'oggetto xml tutte le istanze dell'elemento Somefield e restituiscono un nuovo oggetto xml contenente solo quei valori. Quindi la funzione value rimuove i tag xml che circondano i valori e li passa in un 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]