J'ai la requête suivante qui retourne le salaire de tous les employés. Cela fonctionne parfaitement, mais j'ai besoin de collecter des données supplémentaires que je regrouperai dans une cellule (voir le jeu de résultats 2).Comment concaténer plusieurs lignes?
Comment agréger des données dans une liste séparée par des virgules? Un peu comme Sum, mais j'ai besoin d'une corde en retour.
SELECT Employee.Id, SUM(Pay) as Salary
FROM Employee
INNER JOIN PayCheck ON PayCheck.EmployeeId = Employee.Id
GROUP BY Employee.Id
Jeu de résultats 1
Employee.Id Salary
-----------------------------------
1 150
2 250
3 350
J'ai besoin:
Résultat Set 2
Employee.Id Salary Data
----------------------------------------------------
1 150 One, Two, Three
2 250 Four, Five, Six
3 350 Seven
duplication possible de [Comment créer une liste séparée par des virgules à l'aide d'une requête SQL?] (http://stackoverflow.com/questions/1817985/how-do-i-create -a-comma-separated-list-using-a-sql-query) et de http://stackoverflow.com/questions/3087684/sql-query-to-return-values-of-a-particular-column-concactenated -with-virgule/3087799 # 3087799 @Martin ce dernier a un meilleur examen Il est également possible d'utiliser un agrégat CLR personnalisé. –
Peut-être que j'ai manqué quelque chose ici, mais d'où obtenez-vous les données supplémentaires? – VoodooChild
SqlServer 2017 a maintenant STRING_AGG qui agrège plusieurs chaînes en une en utilisant un séparateur donné. (Pas autorisé à poster une réponse en double à une question en double.) – John