Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एसक्यूएल 2005 परिणाम में शामिल हों

ऐसा करने का ब्लैकबॉक्स तरीका क्रॉस एप्लाई और फॉर एक्सएमएल पाथ के साथ है:

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, 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. समूह डेटा को क्रम में समूहीकृत कॉलम मान के परिवर्तन के अनुसार

  2. SQL सर्वर:IN ('asd') कॉलम NTEXT होने पर काम नहीं कर रहा है

  3. SQL सर्वर में दो अन्य कॉलम के बीच कॉलम जोड़ना

  4. INFORMATION_SCHEMA की क्वेरी करते समय गतिरोध

  5. कुछ भी नहीं से गिनती (*) का चयन क्यों करता है 1