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

SQL, pytania o join

niestety nie ma na to łatwego sposobu w SQL Server. Znane rozwiązania to:

  • sztuczka xml (patrz poniżej);
  • używanie zmiennej do gromadzenia danych (nie działa dla wielu wierszy grup, tylko z kursorem);
  • niestandardowa agregacja CLR;

oto 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

demonstracja skrzypiec SQL

oto zmienna:

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

demonstracja skrzypiec SQL



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę zapytać o wartość w kolumnie SQL Server XML?

  2. SQL Server 2008 — Pobierz ograniczenia dotyczące tabel

  3. Importuj/eksportuj bazę danych za pomocą SQL Server Server Management Studio

  4. SQL Server COALESCE() Objaśnienie

  5. Nie możesz użyć tymczasowej kolumny w klauzuli where?