我的 google 和 stockoverflow 搜索失败了,所以需要你的帮助。我有一个下表
+------+------+------+------------+
| id | Loc | MEL | COUNT(MEL) |
+------+------+------+------------+
| 1 | AAA | A | 1 |
| 2 | BBB | B | 1 |
| 3 | CCC | C | 1 |
| 4 | AAA | D | 1 |
| 5 | AAA | A | 1 |
| 6 | BBB | B | 1 |
| 7 | BBB | C | 1 |
| 8 | AAA | D | 1 |
+------+------+------+------------+
我想把它转换成下表:
+------+------+------+------+
| MEL | AAA | BBB | CCC |
+------+------+------+------+
| A | 2 | | |
| B | | 2 | |
| C | | 1 | 1 |
| D | 2 | | 1 |
+------+------+------+------+
COUNT 和 CASE WHEN 的所有组合都不起作用?
获取下表的代码:
CREATE TABLE Orders
(
id INT,
Loc char(255),
MEL char (10))
insert into Orders values
(1, "AAA", "A"),
(2, "BBB", "B"),
(3, "CCC", "C"),
(4, "AAA", "D"),
(5, "AAA", "A"),
(6, "BBB", "B"),
(7, "BBB", "C"),
(8, "AAA", "D");
最佳答案
select mel,
sum(Loc="AAA") AS AAA,
sum(Loc="BBB") AS BBB /* and so on */
from Orders group by mel;
您需要使用 sum
而不是 count
,因为 bool 表达式返回 0 或 1。count
不关心这个,它只是重要的,无论是 0 还是 1 都没有关系。
关于MySQL - 计数和 CASE WHEN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53321587/