Maison >base de données >tutoriel mysql >Comment faire pivoter des lignes en colonnes dans MySQL à l'aide des fonctions CASE et d'agrégation ?

Comment faire pivoter des lignes en colonnes dans MySQL à l'aide des fonctions CASE et d'agrégation ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-03 02:28:11758parcourir

How to Pivot Rows into Columns in MySQL Using CASE and Aggregate Functions?

Comment transformer des lignes en colonnes dans MySQL

Les tableaux croisés dynamiques sont une transformation de données courante utilisée pour réorganiser les données dans un format plus facile à lire et analyser. Dans ce scénario, nous souhaitons transformer un ensemble de résultats avec plusieurs lignes en un tableau avec des colonnes pour chaque valeur de type distincte et des lignes pour chaque combinaison unique d'ID et d'e-mail.

Pour y parvenir dans MySQL, nous pouvons utiliser le requête suivante :

SELECT ID, 
 MAX(CASE Type WHEN 202 THEN Degignation END) AS `202`
 MAX(CASE Type WHEN 234 THEN Degignation END) AS `234`
 MAX(CASE Type WHEN 239 THEN Degignation END) AS `239`
 Email
FROM mytable
GROUP BY ID, Email

Cette requête utilise l'instruction CASE pour définir conditionnellement la valeur Degignation pour chaque ligne en fonction de sa valeur Type. La fonction d'agrégation MAX() renvoie ensuite la valeur de désignation maximale pour chaque type dans chaque groupe d'ID et d'e-mail.

Remarque : Il est important de remplacer le nom de la table d'espace réservé (mytable) par le nom réel de la table contenant vos données. De plus, vous devez connaître à l'avance toutes les valeurs de type distinctes, car SQL ne permet pas l'ajout dynamique de colonnes lors de l'exécution de la requête.

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