Maison >base de données >tutoriel mysql >Comment créer des tables de pivot dans MySQL en utilisant des instructions de cas et en groupe?

Comment créer des tables de pivot dans MySQL en utilisant des instructions de cas et en groupe?

Susan Sarandon
Susan Sarandonoriginal
2025-01-25 20:35:09981parcourir

How to Create Pivot Tables in MySQL Using CASE Statements and GROUP BY?

Générer des tableaux croisés dynamiques dans MySQL : un guide

Les tableaux croisés dynamiques sont inestimables pour la synthèse des données, vous permettant d'agréger des données sur plusieurs dimensions. Ce guide montre comment créer des tableaux croisés dynamiques dans MySQL à l'aide des instructions CASE et GROUP BY.

Exemple illustratif :

Considérez cet exemple de table MySQL :

company_name action pagecount
Company A PRINT 3
Company A PRINT 2
Company A PRINT 3
Company B EMAIL NULL
Company B PRINT 2
Company B PRINT 2
Company B PRINT 1
Company A PRINT 3

La requête SQL suivante construit un tableau croisé dynamique à partir de ces données :

<code class="language-sql">SELECT
  P.`company_name`,
  COUNT(CASE WHEN P.`action` = 'EMAIL' THEN 1 ELSE NULL END) AS 'EMAIL',
  COUNT(CASE WHEN P.`action` = 'PRINT' AND P.`pagecount` = '1' THEN P.`pagecount` ELSE NULL END) AS 'PRINT 1 pages',
  COUNT(CASE WHEN P.`action` = 'PRINT' AND P.`pagecount` = '2' THEN P.`pagecount` ELSE NULL END) AS 'PRINT 2 pages',
  COUNT(CASE WHEN P.`action` = 'PRINT' AND P.`pagecount` = '3' THEN P.`pagecount` ELSE NULL END) AS 'PRINT 3 pages'
FROM
  test_pivot P
GROUP BY
  P.`company_name`;</code>

Cette requête génère le tableau croisé dynamique suivant :

company_name EMAIL PRINT 1 pages PRINT 2 pages PRINT 3 pages
CompanyA 0 0 1 3
CompanyB 1 1 2 0

Apprentissage complémentaire :

Pour une compréhension plus approfondie des tableaux croisés dynamiques 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!

Déclaration:
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