Можеш да направиш нещо подобно. Вместо незабавно изпращане на XML стойността към низ, тази заявка използва ключовата дума TYPE, за да върне обект от xml тип, който след това може да бъде заявен. Трите функции за заявка търсят в xml обекта всички екземпляри на елемента Somefield и връщат нов xml обект, съдържащ само тези стойности. След това функцията стойност премахва xml таговете около стойностите и ги предава във 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]