ऐसा करने का ब्लैकबॉक्स तरीका क्रॉस एप्लाई और फॉर एक्सएमएल पाथ के साथ है:
declare @t table (id int, link_id int, name varchar(max))
insert into @t select 1, 11, 'test1'
union all select 2, 11, 'test2'
union all select 3, 11, 'test3'
union all select 4, 12, 'test4'
select b.link_id, d.link_names
from (
select distinct link_id
from @t a
) b
cross apply (
select name + ', ' as [text()]
from @t c
where b.link_id = c.link_id
for xml path('')
) d (link_names)
प्रत्येक पंक्ति के लिए, एक क्रॉस लागू लागू सबक्वेरी निष्पादित करता है। इस मामले में, लिंक_आईडी 11 और 12 के लिए सबक्वायरी को दो बार कॉल किया जाता है। सबक्वेरी फिर फॉर एक्सएमएल ऑपरेटर को स्ट्रिंग्स को एक साथ जोड़ने के लिए दुरुपयोग करती है।
यदि आप क्वेरी चलाते हैं, तो वह प्रिंट हो जाएगी:
11 test1, test2, test3,
12 test4,