Maison >base de données >tutoriel mysql >Comment pivoter une table MySQL: transformer les lignes en colonnes?
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 |
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>É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>:
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>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!