Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como concatenar várias linhas?


Para SQL Server 2005+, use a função 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

Mas você está perdendo detalhes sobre onde estão os dados que você deseja transformar em uma string delimitada por vírgulas e como eles se relacionam com um registro de funcionário...