首页 > 数据库 > mysql教程 > 如何使用 MySQL 查询生成数据透视表输出?

如何使用 MySQL 查询生成数据透视表输出?

Mary-Kate Olsen
发布: 2025-01-25 20:37:09
原创
392 人浏览过

How to Generate a Pivot Table Output Using MySQL Queries?

在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>
登录后复制

此查询将输出所需的透视表格式。

重要说明

  • 对于具有更多操作/页数组合的更大表,SQL语句将需要更多CASE条件。
  • 要适应动态条件,您可以使用预处理语句或例程。

以上是如何使用 MySQL 查询生成数据透视表输出?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板