Maison > base de données > tutoriel mysql > Comment puis-je convertir efficacement des lignes en colonnes dans MySQL ?

Comment puis-je convertir efficacement des lignes en colonnes dans MySQL ?

Linda Hamilton
Libérer: 2025-01-25 11:37:11
original
741 Les gens l'ont consulté

How Can I Efficiently Convert Rows to Columns in MySQL?

Explication détaillée de la conversion de ligne en colonne MySQL

Dans MySQL, la conversion des lignes d'un tableau en colonnes nécessite des étapes.

Étape 1 : Déterminer les valeurs X et Y

Tout d’abord, identifiez les colonnes qui composent les valeurs X (en-têtes de colonne) et les valeurs Y (lignes) du tableau croisé dynamique. Dans cet exemple, hostid sera la valeur Y et itemname sera la valeur X.

Étape 2 : Ajouter des colonnes supplémentaires

Ajoutez une nouvelle colonne pour chaque valeur X contenant la valeur correspondante. Par exemple, pour les valeurs X A, B et C, utilisez l'instruction CASE pour ajouter les colonnes A, B et C comme suit :

<code class="language-sql">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 3 : Regroupement et agrégation

Regroupez la table étendue par la colonne de valeur Y (hostid dans ce cas) et agrégez la nouvelle colonne à l'aide d'une fonction d'agrégation telle que SUM.

<code class="language-sql">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

Étape 4 : Embellir (facultatif)

Si vous le souhaitez, toute valeur NULL peut être remplacée par une valeur neutre (par exemple 0) pour rendre le tableau plus lisible :

<code class="language-sql">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

Autres notes

  • Les valeurs utilisées dans les colonnes supplémentaires peuvent être ajustées en fonction de besoins spécifiques.
  • La fonction d'agrégation utilisée peut varier en fonction du résultat souhaité (par exemple COUNT, MAX).
  • Vous pouvez utiliser plusieurs colonnes comme valeurs Y en spécifiant plusieurs colonnes dans la clause GROUP BY.
  • Bien que cette solution fonctionne bien pour un nombre limité de colonnes de tableau croisé dynamique, elle devient compliquée pour les tableaux comportant un grand nombre de colonnes.

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