【发布时间】:2013-12-02 04:04:07
【问题描述】:
我正在尝试使用 case 语句在 MySQL 中对表进行透视。这个问题在这里被问过很多次,我已经研究了所有这些答案,但我正在寻找一个解决方案:
1. 使用案例陈述。不是自联接、子查询或联合。
2. 只使用 SQL。不是 Excel 或 shell 脚本。
3. 适用于 MySQL。
这是表格:
create table client (
name varchar(10),
revenue int(11),
expense int(11)
);
insert into client (name, revenue, expense) values ("Joe", 100, 200);
insert into client (name, revenue, expense) values ("Bill", 300, 400);
insert into client (name, revenue, expense) values ("Tim", 500, 600);
mysql> select * from client;
+------+---------+---------+
| name | revenue | expense |
+------+---------+---------+
| Joe | 100 | 200 |
| Bill | 300 | 400 |
| Tim | 500 | 600 |
+------+---------+---------+
我想把表格转成这个:
+-----+------+-----+
| Joe | Bill | Tim |
| 100 | 300 | 500 |
| 200 | 400 | 600 |
+-----+------+-----+
我怎样才能做到这一点?
我已经在 artfulsoftware dot com 和 buysql dot com 看到了解决方案,但这些解决方案不适用于我的桌子。
【问题讨论】:
-
你不能。不是根据你的限制。
-
杰夫,哪个限制阻止了解决方案?
-
您需要使用联合,因为您在两个不同的列(收入和费用)上进行聚合。
-
我并不是说你不能完成你需要的,我只是不明白你为什么要给自己设置这些限制。
-
好的,谢谢你的提示,请告诉我如何使用案例陈述和联合来完成?
标签: mysql pivot-table