Bạn có thể làm một cái gì đó như thế này. Thay vì ngay lập tức gửi giá trị XML đến một chuỗi, truy vấn này sử dụng từ khóa TYPE để trả về một đối tượng kiểu xml mà sau đó có thể được truy vấn. Ba hàm truy vấn tìm kiếm đối tượng xml cho tất cả các phiên bản của phần tử Somefield và trả về một đối tượng xml mới chỉ chứa các giá trị đó. Sau đó, hàm giá trị loại bỏ các thẻ xml xung quanh các giá trị và chuyển chúng vào một 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]