Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come concatenare più righe?

Per SQL Server 2005+, utilizzare la funzione STUFF e FOR XML PATH:

WITH summary_cte AS (
   SELECT Employee.Id, SUM(Pay) as Salary
     FROM Employee
     JOIN PayCheck ON PayCheck.EmployeeId = Employee.Id
 GROUP BY Employee.Id)
SELECT sc.id, 
       sc.salary,
       STUFF((SELECT ','+ yt.data
                FROM your_table yt
               WHERE yt.id = sc.id
            GROUP BY yt.data
             FOR XML PATH(''), TYPE).value('.','VARCHAR(max)'), 1, 1, '')
  FROM summary_cte sc

Ma ti mancano i dettagli su dove si trovano i dati che desideri trasformare in una stringa delimitata da virgole e come si riferiscono a un record di un dipendente...