आप ऐसा कुछ कर सकते हैं। XML मान को तुरंत एक स्ट्रिंग में भेजने के बजाय, यह क्वेरी एक xml प्रकार की वस्तु को वापस करने के लिए TYPE कीवर्ड का उपयोग करती है जिसे तब क्वेरी किया जा सकता है। तीन क्वेरी फ़ंक्शन कुछ फ़ील्ड तत्व के सभी उदाहरणों के लिए xml ऑब्जेक्ट खोजते हैं और एक नया 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]