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!