Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak połączyć wiele wierszy?

W przypadku SQL Server 2005+ użyj funkcji STUFF i 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

Ale brakuje Ci szczegółowych informacji o tym, gdzie znajdują się dane, które chcesz przekształcić w ciąg rozdzielany przecinkami, i jak odnoszą się one do rekordu pracownika...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Usuń profil poczty bazy danych w programie SQL Server (T-SQL)

  2. Odpytywanie połączonego serwera sql

  3. Zliczanie Liczba kolejnych wystąpień wartości w tabeli

  4. Czy INNER JOIN może zapewnić lepszą wydajność niż EXISTS?

  5. Najlepsze rozwiązanie do stronicowania przy użyciu SQL Server 2005?