Maison >base de données >tutoriel mysql >Comment transformer les données d'une colonne MySQL en un tableau croisé dynamique basé sur des lignes ?
Convertir les données des colonnes MySQL au format de ligne (tableau croisé dynamique)
Cet article décrit comment convertir une table MySQL contenant des données multi-colonnes en données au format ligne et colonne. La structure résultante est appelée tableau croisé dynamique et fournit une vue concise mais complète des données.
Énoncé du problème :
Nous avons un tableau avec plusieurs colonnes, chaque colonne représente une catégorie de données, notre objectif est de le convertir en format de tableau croisé dynamique, où les lignes représentent des catégories (col1, col2, col3, col4) et les colonnes représentent des mois ( janvier, février).
Cadre de solution :
Pour implémenter cette conversion dans MySQL, nous devons suivre le processus en deux étapes suivant :
Anti-Perspective (UNION TOUS) :
Perspective (agrégation et CASE) :
Requêtes implémentées :
Anti-Perspective (UNION TOUS) :
<code class="language-sql">SELECT id, month, col1 AS value, 'col1' AS descrip FROM yourtable UNION ALL SELECT id, month, col2 AS value, 'col2' AS descrip FROM yourtable UNION ALL SELECT id, month, col3 AS value, 'col3' AS descrip FROM yourtable UNION ALL SELECT id, month, col4 AS value, 'col4' AS descrip FROM yourtable;</code>
Perspective (agrégation et CASE) :
<code class="language-sql">SELECT descrip, MAX(CASE WHEN month = 'Jan' THEN value ELSE 0 END) AS Jan, MAX(CASE WHEN month = 'Feb' THEN value ELSE 0 END) AS Feb FROM ( SELECT id, month, col1 AS value, 'col1' AS descrip FROM yourtable UNION ALL SELECT id, month, col2 AS value, 'col2' AS descrip FROM yourtable UNION ALL SELECT id, month, col3 AS value, 'col3' AS descrip FROM yourtable UNION ALL SELECT id, month, col4 AS value, 'col4' AS descrip FROM yourtable ) AS source GROUP BY descrip;</code>
Résultat :
Cette requête convertira le tableau d'entrée au format tableau croisé dynamique :
DESCRIP | Jan | Feb |
---|---|---|
col1 | A | C |
col2 | B | A |
col3 | 0 | G |
col4 | B | E |
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!