Maison >base de données >tutoriel mysql >Comment puis-je concaténer des étiquettes en fonction des ID correspondants dans SQL ?

Comment puis-je concaténer des étiquettes en fonction des ID correspondants dans SQL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-30 22:06:15736parcourir

How Can I Concatenate Labels Based on Matching IDs in SQL?

Concaténation de valeurs basées sur l'ID

Pour résoudre la tâche fournie consistant à combiner plusieurs lignes avec le même ID et à concaténer les étiquettes correspondantes, utilisez le requête SQL suivante :

declare @T table(Response_ID int, Label varchar(50))
insert into @T values
(12147,          'It was not clear'),
(12458,          'Did not Undersstand'),
(12458,          'Was not resolved'),
(12458,          'Did not communicate'),
(12586,          'Spoke too fast'),
(12587,          'Too slow')

select T1.Response_ID,
       stuff((select ','+T2.Label
              from @T as T2
              where T1.Response_ID = T2.Response_ID
              for xml path(''), type).value('.', 'varchar(max)'), 1, 1, '') as Label
from @T as T1
group by T1.Response_ID

Dans le requête :

  • @T représente la table d'entrée avec les colonnes Response_ID et Label.
  • Les données sont insérées dans @T pour servir de point de départ à la requête.
  • La première sous-requête récupère les valeurs Label pour chaque Response_ID et les concatène avec des virgules. La clause FOR XML génère une chaîne XML, qui est ensuite convertie en une seule chaîne à l'aide de l'expression VALUE('','VARCHAR(MAX)').
  • La requête externe regroupe les résultats par Response_ID et utilise STUFF () pour concaténer les valeurs Label combinées avec le Response_ID.
  • Enfin, il affiche les valeurs concaténées pour chaque unique Réponse_ID.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn