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>
Cette requête affichera le format de tableau croisé dynamique souhaité.
Remarque importante
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!