Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment concaténer plusieurs lignes ?

Pour SQL Server 2005+, utilisez la fonction STUFF et 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

Mais il vous manque des détails sur l'emplacement des données que vous souhaitez transformer en une chaîne délimitée par des virgules et sur leur lien avec un enregistrement d'employé...