Maison > base de données > tutoriel mysql > Comment pivoter une table MySQL: transformer les lignes en colonnes?

Comment pivoter une table MySQL: transformer les lignes en colonnes?

Barbara Streisand
Libérer: 2025-01-25 11:32:13
original
498 Les gens l'ont consulté

How to Pivot a MySQL Table: Transforming Rows into Columns?

Remodeler la forme dans le format de colonne

Challenge

: Recherchez les données de la table MySQL dans une formule de forme de perspective et convertissez la ligne en colonne.

Question :

Étant donné un tableau contenant un hostide, un itemname et la colonne ItemValue, veuillez appuyer sur les résultats comme indiqué ci-dessous:

Solution

:

hostid A B C
1 10 3 0
2 9 0 40
Étape 1: Sélectionnez la colonne de intéressé

ok fournira des colonnes qui fourniront des valeurs y et des valeurs x (itemname).

Étape 2: étendez le tableau de base

Créer des colonnes supplémentaires pour chaque valeur X unique.

Étape 3: groupement et agrégation

groupId (hostid) et agréger la table d'extension.

<code class="language-sql">CREATE VIEW history_extended AS
SELECT
    history.*,
    CASE WHEN itemname = "A" THEN itemvalue END AS A,
    CASE WHEN itemname = "B" THEN itemvalue END AS B,
    CASE WHEN itemname = "C" THEN itemvalue END AS C
FROM history;</code>
Copier après la connexion
Étape 4: Embellir (facultatif)

Remplacez la valeur nul à zéro pour obtenir une apparence plus claire.

Précautions et restrictions
<code class="language-sql">CREATE VIEW history_itemvalue_pivot AS
SELECT
    hostid,
    SUM(A) AS A,
    SUM(B) AS B,
    SUM(C) AS C
FROM history_extended
GROUP BY hostid;</code>
Copier après la connexion
:

Les valeurs utilisées dans la colonne d'extension et la valeur par défaut des valeurs manquantes peuvent être personnalisées.

Vous pouvez ajuster la fonction de polymérisation (par exemple, max).

<code class="language-sql">CREATE VIEW history_itemvalue_pivot_pretty AS
SELECT 
    hostid, 
    COALESCE(A, 0) AS A, 
    COALESCE(B, 0) AS B, 
    COALESCE(C, 0) AS C 
FROM history_itemvalue_pivot;</code>
Copier après la connexion
Si vous utilisez plusieurs colonnes comme valeur Y ou un grand nombre de colonnes de perspective sont nécessaires, cette solution peut ne pas être applicable.

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