暂无图片
如何在 MySQL 中返回数据透视表输出?
我来答
分享
暂无图片 匿名用户
如何在 MySQL 中返回数据透视表输出?

原表:

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

复制

想要达成的表:

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

复制
我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
chengang

典型的行转列

create table test(company_name varchar(20),act varchar(10),pagecount int); insert into test VALUES('CompanyA','print',3),('CompanyA','print',2 ),('CompanyA','print',3) ,('CompanyB','print',2),('CompanyB','print',2),('CompanyB','print',1),('CompanyA','print',3); INSERT INTO TEST(company_name,act) values('CompanyB','EMAIL'); select company_name,sum(email) as EMAIL, sum(PRINT_1_PAGES) as PRINT_1_PAGES, sum(PRINT_2_PAGES) as PRINT_2_PAGES, sum(PRINT_3_PAGES) as PRINT_3_PAGES from ( select company_name,case when act = 'EMAIL' THEN 1 ELSE 0 END AS EMAIL, CASE WHEN ACT = 'print' AND PAGECOUNT =1 THEN 1 ELSE 0 END AS PRINT_1_PAGES, CASE WHEN ACT = 'print' AND PAGECOUNT =2 THEN 1 ELSE 0 END AS PRINT_2_PAGES, CASE WHEN ACT = 'print' AND PAGECOUNT =3 THEN 1 ELSE 0 END AS PRINT_3_PAGES FROM TEST ) as t1 group by company_name
复制

结果

CompanyA 0 0 1 3
CompanyB 1 1 2 0

暂无图片 评论
暂无图片 有用 1
打赏 0
暂无图片
回答交流
Markdown


请输入正文
提交
相关推荐
大佬们 PMM怎么添加mysql的慢查询监控?
回答 1
可以参考一下,图片是一个小时内慢查询的条数。
MySQL的参照完整性通过什么方法实现?
回答 1
已采纳
参照完整性(ReferentialIntegrity)也称为引用完整性。参照完整性用于保证相关数据表中数据的一致性,进而保证主键和外键之间的关系总能得到维护。强制参照完整性可以通过以下方法实现:1)外
MySQL数据库能去重吗?
回答 2
selectdistinctconcat(id,name)fromt;但是要注意在约束不为notnull的列上面加上ifnull
mysql慢查询:现在使用的云数据库polardb, 在阿里后台看到很多慢sql, 但是拷贝出来执行, 速度都很快,这是什么原因?
回答 2
已采纳
单独拷贝出来执行没有参考意义。因为原生产环境中的硬件配置、当前连接数、并发数等和你线下的不一样。这种情况多半是硬件资源不足导致的,可以考虑增加内存、更换更快的磁盘等来解决。
MySQL与锁相关的监控项,通过什么参数获取?
回答 1
已采纳
锁相关的监控项主要包括以下几点:1)表锁情况  tablelockswaited参数表示表锁等待的次数,可以通过获取参数tablelockswaited的值来确定表锁情况。2)In
mysql怎么检查主从一致?
回答 2
查看两个yes和一个id号:SlaveIORunning:YESSlaveSQLRunning:YES截取远程Position号mysqlh192.168.18.31u'ceshi'p123e'sho
oracle数据库怎么导入mysql里?2个库网络环境不通
回答 1
已采纳
方法一:使用阿里巴巴开源的datax产品https://github.com/alibaba/datax下载编译用datax将oracle数据导出为文本文件(csv格式)。将文本文件复制到目标库。用d
MySQL有联表添加修改数据吗?
回答 1
已采纳
mysql同时执行新增和修改,mysql关联表更新数据。在mysql中,可以使用UPDATE语句来修改、更新一个或多个表的数据。使用UPDATE语句修改单个表,语法格式为:UPDATE<表名&g
MySQL的redo机制跟Oracle一样吗?
回答 2
在MySQL中,事务结束(commit或rollback)并不会直接触发检查点。检查点(Checkpoint)是数据库系统中的一个机制,主要用于减少恢复时间,通过将内存中的修改过的页(脏页)刷新(写)
远程协助搭建mysql集群
回答 4
问题解决没,可远程指导