Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL, câu hỏi về tham gia

Thật không may, không có cách nào dễ dàng để làm điều đó trong SQL Server. Các giải pháp đã biết là:

  • thủ thuật xml (xem bên dưới);
  • sử dụng biến để tích lũy dữ liệu (không hoạt động với nhiều hàng nhóm, chỉ với con trỏ);
  • tổng hợp CLR tùy chỉnh;

đây là xml:

select
    n.name1,
    stuff(
        (
         select ', ' + p.product
         from prod as p
         where p.id_name = n.id
         for xml path(''),  type).value('.', 'nvarchar(max)')
    , 1, 2, '') as products
from name as n

sql fiddle demo

đây là biến:

declare @product nvarchar(max), @id int

select @id = 1

select @product = isnull(@product + ', ', '') + product
from prod
where id_name = @id

select name1, @product as products
from name 
where id = @id

sql fiddle demo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. xuất sang Excel từ danh sách với EPPLUS

  2. Ưu điểm và nhược điểm của việc triển khai môi trường đám mây kết hợp

  3. SQL Server:Sự khác biệt giữa CROSS JOIN và FULL OUTER JOIN là gì?

  4. CHÈN SỐ LƯỢNG LỚN với cột nhận dạng (tăng tự động)

  5. Sử dụng SQL Server trong một giao dịch XA được phân phối