暂无图片
如何在 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
暂无图片
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏