Maison >base de données >tutoriel mysql >Comment faire pivoter des lignes en colonnes dans MySQL à l'aide de CASE et MAX() ?

Comment faire pivoter des lignes en colonnes dans MySQL à l'aide de CASE et MAX() ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-08 16:58:10689parcourir

How to Pivot Rows into Columns in MySQL Using CASE and MAX()?

Transformer des lignes en colonnes dans MySQL

Considérons une base de données avec le tableau suivant :

CREATE TABLE mytable (
  ID INTEGER PRIMARY KEY,
  Type INTEGER,
  Email VARCHAR(255),
  Degignation VARCHAR(255)
);

L'objectif est pour transformer les données des lignes en colonnes, la colonne Type devenant des en-têtes de colonne et la dernière colonne devenant des valeurs de ligne. Le résultat attendu ressemblerait à ceci :

ID                202         234                     239        Email
1000000000   Entrepreneur  Engineering,Development    CTO       [email protected]

Pour réaliser cette transformation, MySQL fournit une requête plutôt complexe :

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'expression CASE pour vérifier la colonne Type de chaque ligne. et attribuez la valeur de désignation correspondante à la colonne appropriée dans l'ensemble de résultats. La fonction MAX() est utilisée pour garantir que seule la valeur la plus récente (ou maximale) est renvoyée pour chaque colonne Type.

Il est important de noter que la requête nécessite un ensemble fixe d'en-têtes de colonne, ce qui signifie que les différents Les valeurs de type doivent être connues à l'avance. SQL ne prend pas en charge l'ajout dynamique de colonnes basé sur les valeurs de données découvertes 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