Je zou zoiets kunnen doen. In plaats van de XML-waarde onmiddellijk naar een tekenreeks te sturen, gebruikt deze query het sleutelwoord TYPE om een object van het type xml te retourneren dat vervolgens kan worden opgevraagd. De drie queryfuncties zoeken in het xml-object naar alle instanties van het Somefield-element en retourneren een nieuw xml-object dat alleen die waarden bevat. Dan verwijdert de waardefunctie de xml-tags die de waarden omringen en geeft ze door aan een 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]