Maison > base de données > tutoriel mysql > Comment effectuer un pivotement dynamique des données dans MySQL ?

Comment effectuer un pivotement dynamique des données dans MySQL ?

DDD
Libérer: 2025-01-06 07:35:43
original
897 Les gens l'ont consulté

How to Perform Dynamic Data Pivoting in MySQL?

Pivotement dynamique des données dans MySQL

Le pivotement des données est une opération courante dans la transformation des données, qui consiste à remodeler les données d'une disposition verticale à une disposition horizontale. En SQL, cela peut être réalisé en utilisant différentes techniques telles que les fonctions UNPIVOT ou PIVOT. Cependant, MySQL ne dispose pas de fonction PIVOT native, ce qui nécessite d'explorer des méthodes alternatives.

Une approche du pivotement dynamique dans MySQL consiste à construire dynamiquement une requête à l'aide de fonctions d'agrégation et d'instructions CASE. Cette méthode implique la création dynamique de l'instruction SQL en fonction des dimensions et des valeurs requises dans la sortie.

L'exemple suivant montre comment implémenter le pivotement dynamique à l'aide d'instructions préparées :

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when part_type = ''',
      part_type,
      ''' then part_id end) AS part_',
      part_type, '_id'
    )
  ) INTO @sql
FROM
  parts;
SET @sql = CONCAT('SELECT product_id, ', @sql, ' 
                  FROM parts 
                   GROUP BY product_id');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
Copier après la connexion

Dans cette requête , nous générons dynamiquement une instruction SELECT basée sur les types de pièces distincts, qui sont les dimensions du pivot. Nous utilisons l'instruction CASE pour attribuer le part_id à la colonne pivot appropriée en fonction du part_type. L'instruction SQL générée est ensuite exécutée à l'aide d'instructions préparées pour de meilleures performances.

Une autre option consiste à utiliser une version statique de la requête si vous connaissez le nombre limité de colonnes nécessaires dans la sortie :

select product_id,
  max(case when part_type ='A' then part_id end) as Part_A_Id,
  max(case when part_type ='B' then part_id end) as Part_B_Id
from parts
group by product_id
Copier après la connexion

En tirant parti de ces techniques, vous pouvez implémenter un pivotement dynamique dans MySQL pour remodeler efficacement vos données.

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