Maison > base de données > tutoriel mysql > Comment annuler le pivotement et faire pivoter des données dans MySQL pour transformer des colonnes en lignes ?

Comment annuler le pivotement et faire pivoter des données dans MySQL pour transformer des colonnes en lignes ?

DDD
Libérer: 2025-01-09 15:07:41
original
967 Les gens l'ont consulté

How to Unpivot and Pivot Data in MySQL to Transform Columns into Rows?

Pivot et pivot de données MySQL : convertir les colonnes en lignes

Supposons que vous ayez un tableau avec plusieurs colonnes (col1, col2, col3, etc.) et que vous souhaitiez le convertir au format de tableau croisé dynamique, présentant les données en unités de ligne plutôt qu'en colonnes.

Pour y parvenir dans MySQL, utilisez d'abord la requête UNION ALL pour faire pivoter les données. Ce processus crée plusieurs lignes à partir des valeurs de colonne d'origine :

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

UNION ALL Résultats de la requête :

IDMONTHVALUEDESCRIP
101JanAcol1
102febCcol1
101JanBcol2
102febAcol2
101Jan(null)col3
102febGcol3
101JanBcol4
102febEcol4

Ensuite, enveloppez la requête UNION ALL dans une sous-requête pour faire pivoter les données. Utilisez les fonctions d'agrégation GROUP BY et les instructions CASE pour convertir la structure de la perspective non pivotée dans le format de perspective souhaité :

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 src
GROUP BY descrip;
Copier après la connexion

Résultats de la requête pivot :

DESCRIP JAN FEB
col1 A C
col2 B A
col3 0 G
col4 B E

Ce processus convertit efficacement la structure du tableau de colonnes en lignes, vous permettant de présenter vos données de manière plus concise et claire.

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 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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal