Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

sql 2005 присъединяване резултати

Начинът на черната кутия за това е с CROSS APPLY и 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)

За всеки ред CROSS APPLY изпълнява приложената подзаявка. В този случай подзаявката се извиква два пъти, за link_id 11 и 12. След това подзаявката злоупотребява с оператора FOR XML, за да добави низовете заедно.

Ако изпълните заявката, тя ще отпечата:

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. SQL Server - В клауза с декларирана променлива

  2. Каква е разликата между Scope_Identity(), Identity(), @@Identity и Ident_Current()?

  3. Изтриване на xml възел от колоната на таблицата на SQL Server 2008 r2 въз основа на стойността на атрибута

  4. вземете топ 10 публикации и 10 коментара за всяка публикация sql

  5. Как да копирате данни от таблица от отдалечен сървър на локален сървър в SQL Server 2008