Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

résultats de jointure sql 2005

Pour ce faire, la méthode de la boîte noire consiste à appliquer CROSS APPLY et FOR XML PATH :

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)

Pour chaque ligne, un CROSS APPLY exécute la sous-requête appliquée. Dans ce cas, la sous-requête est appelée deux fois, pour link_id 11 et 12. La sous-requête abuse alors de l'opérateur FOR XML pour additionner les chaînes.

Si vous exécutez la requête, elle affichera :

11   test1, test2, test3, 
12   test4,