Maison > base de données > tutoriel mysql > Comment puis-je créer une sortie de type tableau croisé dynamique dans MySQL à l'aide de SQL ?

Comment puis-je créer une sortie de type tableau croisé dynamique dans MySQL à l'aide de SQL ?

Mary-Kate Olsen
Libérer: 2025-01-25 20:42:09
original
581 Les gens l'ont consulté

How can I create a pivot table-like output in MySQL using SQL?

Génération de résultats de type tableau croisé dynamique dans MySQL

Cet article montre comment créer un effet de tableau croisé dynamique dans MySQL à l'aide de SQL. L'objectif est de résumer les données, en les regroupant par nom d'entreprise et en affichant le nombre de différentes actions et le nombre de pages.

Comprendre les tableaux croisés dynamiques

Un tableau croisé dynamique transforme les données en un rapport récapitulatif. Les lignes représentent les catégories (ici, les noms d'entreprises), tandis que les colonnes représentent les mesures analysées (actions et nombre de pages).

Solution SQL : Utilisation de CASE et GROUP BY

L'approche la plus simple utilise des instructions CASE au sein d'une fonction d'agrégation COUNT, regroupées par nom de société. Voici un exemple de requête :

<code class="language-sql">SELECT
    P.company_name,
    COUNT(CASE WHEN P.action = 'EMAIL' THEN 1 END) AS EMAIL,
    COUNT(CASE WHEN P.action = 'PRINT' AND P.pagecount = 1 THEN 1 END) AS 'PRINT 1 pages',
    COUNT(CASE WHEN P.action = 'PRINT' AND P.pagecount = 2 THEN 1 END) AS 'PRINT 2 pages',
    COUNT(CASE WHEN P.action = 'PRINT' AND P.pagecount = 3 THEN 1 END) AS 'PRINT 3 pages'
FROM
    P
GROUP BY
    P.company_name;</code>
Copier après la connexion

Explication de la requête :

  • CASE les déclarations comptent de manière conditionnelle les occurrences d'actions spécifiques et le nombre de pages.
  • COUNT regroupe les résultats pour chaque condition.
  • GROUP BY regroupe les résultats par company_name, produisant la structure du tableau croisé dynamique.

Limites et alternatives :

Cette méthode nécessite de définir manuellement chaque condition, ce qui la rend fastidieuse pour de nombreuses actions ou nombre de pages. Des techniques plus avancées, telles que les instructions préparées ou les procédures stockées, offrent une meilleure évolutivité pour des ensembles de données plus volumineux.

Lectures complémentaires :

Pour des solutions de tableau croisé dynamique plus sophistiquées dans MySQL, explorez ces ressources :

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