Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

sql 2005 dołącz wyniki

Czarnym sposobem na to jest użycie CROSS APPLY i 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)

Dla każdego wiersza CROSS APPLY wykonuje zastosowane podzapytanie. W tym przypadku podzapytanie jest wywoływane dwukrotnie, dla identyfikatora linku 11 i 12. Podzapytanie wykorzystuje następnie operator FOR XML, aby dodać ciągi razem.

Jeśli uruchomisz zapytanie, wyświetli się:

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. samouczek dla początkujących dla przeglądarki raportów?

  2. Jak uzyskać najlepiej opłacany wiersz pracownika

  3. Zwróć wszystkie nieobliczone kolumny z tabeli w SQL Server

  4. Pierwsza publiczna wersja zapoznawcza SQL Server 2019:CTP 2.0

  5. zamień jeden wiersz na kolumny