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

Как да свържете няколко реда?

За SQL Server 2005+ използвайте функцията STUFF и 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

Но ви липсват подробности за това къде се намират данните, които искате да превърнете в низ, разделен със запетая, и как се отнасят към запис на служител...



  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 Management Studio (SSMS)

  2. Как да използвате SQL Server T-SQL функция SUM:5 случаи на употреба

  3. Тригер за актуализиране на SQL Server, Получавайте само променени полета

  4. Ред, разделен със запетая, с клауза Group By

  5. Реални срещу плаваща запетая срещу пари