Maison > base de données > tutoriel mysql > Comment générer une sortie de table pivot à l'aide de requêtes MySQL?

Comment générer une sortie de table pivot à l'aide de requêtes MySQL?

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

How to Generate a Pivot Table Output Using MySQL Queries?

Renvoyer la sortie du tableau croisé dynamique dans MySQL

Supposons que vous ayez une table MySQL organisée comme suit :

公司名称 操作 页数
公司A 打印 3
公司A 打印 2
公司A 打印 3
公司B 邮件 NULL
公司B 打印 2
公司B 打印 2
公司B 打印 1
公司A 打印 3

Maintenant, l'objectif est d'exécuter une requête MySQL pour produire un résultat similaire à celui-ci :

公司名称 邮件 打印1页 打印2页 打印3页
公司A 0 0 1 3
公司B 1 1 2 0

Essentiellement, ce résultat représente un tableau croisé dynamique qui trie les données en fonction de la combinaison d'action et de nombre de pages pour chaque nom d'entreprise.

Solution

Pour renvoyer la sortie du tableau croisé dynamique dans MySQL, vous pouvez utiliser l'instruction CASE pour définir les conditions pour chaque cellule et utiliser GROUP BY pour trier les données par nom d'entreprise.

Ce qui suit est l'instruction SQL pour l'exemple fourni :

<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>
Copier après la connexion

Cette requête affichera le format de tableau croisé dynamique souhaité.

Remarque importante

  • Pour les tables plus grandes avec plus de combinaisons opération/page, l'instruction SQL nécessitera plus de conditions CASE.
  • Pour vous adapter aux conditions dynamiques, vous pouvez utiliser des instructions ou des routines préparé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
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