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

SQL, въпроси относно присъединяването

за съжаление, няма лесен начин да го направите в SQL Server. Известни решения са:

  • xml трик (вижте по-долу);
  • използване на променлива за натрупване на данни (не работи за множество групови редове, само с курсор);
  • персонализиран CLR агрегат;

ето го 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

ето променливата:

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



  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. Връщане на списък с всички сървърни тригери в SQL Server

  3. Актуализиране на пощенски акаунт в база данни (SSMS)

  4. SqlParameter вече се съдържа от друга колекция SqlParameterCollection - мами ли using() {}?

  5. Вземете ROWS като КОЛОНИ (динамична PIVOT заявка на SQL Server)