Concaténer des valeurs en fonction de l'ID
J'Ai une table appelée les Résultats et l'apparence des données:
Response_ID Label
12147 It was not clear
12458 Did not Undersstand
12458 Was not resolved
12458 Did not communicate
12586 Spoke too fast
12587 Too slow
Maintenant, je veux de la puissance pour afficher une ligne par ID et les valeurs de l'Étiquette pour être concaténés et séparés par des virgules
Ma Sortie devrait ressembler à:
Response_ID Label
12147 It was not clear
12458 Did not Undersstand,Was not resolved,Did not communicate
12586 Spoke too fast
12587 Too Slow
Comment puis-je faire cela:
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas être sûr à propos de l'ordre des chaînes concaténées sans ordonnance par une instruction dans la sous-requête. Le
.value('.', 'varchar(max)')
partie est là pour gérer le cas oùLabel
contient XML-hostiles personnages comme&
.Vérifier le lien ci-dessous, il s'approche de votre problème avec de nombreuses solutions différentes
http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/
De considérer cela, il est très performant:
http://jerrytech.blogspot.com/2010/04/tsql-concatenate-strings-1-2-3-and.html
Éviter les fonctions XML parce qu'ils ne sont pas performants.
Cela va prendre un certain effort pour les mettre en œuvre, mais des millions de lignes => millisecondes à exécuter.