0 votes

Afficher une colonne non agrégée dans une requête group by en SQL

J'ai une table dans SQL 2008 comme

ID     Items
1      A
1      B
2      C
3      D
3      B

Je voudrais obtenir le résultat suivant

ID    Items
1     A,B
2     C
3     B,D

J'ai utilisé des curseurs mais cela a considérablement ralenti le processus. Puis-je obtenir le résultat ci-dessus en utilisant la requête groupée par ou par un autre moyen ?

Merci et salutations

Kapil

2voto

Wolph Points 28062

Vous cherchez un moyen de concaténer les résultats. Je ne pense pas que MSSQL ait une fonction pour cela, mais voici un très bon tutoriel sur la façon de créer une méthode de ce type : http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/

0voto

Brian Hooper Points 8906

Je pense

GROUP_CONCAT

est la fonction que vous recherchez. Quelque chose comme

SELECT id,
       GROUP_CONCAT (DISTINCT Items ORDER BY Items SEPARATOR ',')
    FROM my_table
    GROUP BY id;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X