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
852 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 :

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

UNION ALL Résultats de la requête :

ID MONTH VALUE DESCRIP
101 Jan A col1
102 feb C col1
101 Jan B col2
102 feb A col2
101 Jan (null) col3
102 feb G col3
101 Jan B col4
102 feb E col4

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é :

<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 src
GROUP BY descrip;</code>
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!

source:php.cn
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