Maison > base de données > tutoriel mysql > Comment concaténer plusieurs étiquettes en une seule ligne en fonction de l'ID ?

Comment concaténer plusieurs étiquettes en une seule ligne en fonction de l'ID ?

Susan Sarandon
Libérer: 2024-12-30 21:52:10
original
814 Les gens l'ont consulté

How to Concatenate Multiple Labels into a Single Row Based on ID?

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

Cette question cherche à transformer une table avec plusieurs lignes par ID et une seule colonne « Étiquette » en un table avec une ligne par ID et une colonne 'Label' concaténée. Chaque étiquette doit être séparée par des virgules.

Les données fournies sont constituées des observations suivantes :

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

Le résultat souhaité est :

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

Pour réaliser cette transformation , l'extrait de code suivant peut être utilisé :

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
Copier après la connexion

La sous-requête de la fonction 'stuff' utilise la concaténation via le Opérateur ' ' et méthodes XML pour gérer la combinaison d'étiquettes. La fonction 'value' du paramètre 'type' convertit la sortie XML en un type varchar(max) pour garantir un affichage correct des résultats concaténés.

Veuillez noter que sans une instruction order by dans la sous-requête, l'ordre des résultats concaténés les cordes ne peuvent pas être garanties.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal