Vous pourriez faire quelque chose comme ça. Au lieu d'envoyer immédiatement la valeur XML à une chaîne, cette requête utilise le mot clé TYPE pour renvoyer un objet de type xml qui peut ensuite être interrogé. Les trois fonctions de requête recherchent dans l'objet xml toutes les instances de l'élément Somefield et renvoient un nouvel objet xml contenant uniquement ces valeurs. Ensuite, la fonction value supprime les balises xml entourant les valeurs et les passe dans 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]