在MySQL中返回透视表输出
假设您有一个MySQL表,其组织方式如下:
公司名称 | 操作 | 页数 |
---|---|---|
公司A | 打印 | 3 |
公司A | 打印 | 2 |
公司A | 打印 | 3 |
公司B | 邮件 | NULL |
公司B | 打印 | 2 |
公司B | 打印 | 2 |
公司B | 打印 | 1 |
公司A | 打印 | 3 |
现在,目标是执行一个MySQL查询以生成类似于此的输出:
公司名称 | 邮件 | 打印1页 | 打印2页 | 打印3页 |
---|---|---|---|---|
公司A | 0 | 0 | 1 | 3 |
公司B | 1 | 1 | 2 | 0 |
从本质上讲,此输出表示一个透视表,它根据每个公司名称的操作和页数组合对数据进行分类。
解决方案
要在MySQL中返回透视表输出,您可以使用CASE语句定义每个单元格的条件,并使用GROUP BY按公司名称对数据进行分类。
以下是提供的示例的SQL语句:
<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>
此查询将输出所需的透视表格式。
重要说明
以上是如何使用 MySQL 查询生成数据透视表输出?的详细内容。更多信息请关注PHP中文网其他相关文章!