MySQL - 计数和 CASE WHEN

标签 mysql

我的 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/

相关文章:

php - 如何在可移植媒体(例如 CD、USB 和/或 iPhone)上运行 PHP 和 MySQL 的等价物

php - 尝试连接到数据库时收到 PHP 错误

mysql - CakePHP 3 - 查找器未加载正确的数据

php - CodeIgniter mySQL 2 表左外连接

mysql - 我想知道谷歌搜索引擎是如何快速挑选结果的

php - 使用 php 的 mysqli 准备好的语句很慢

mysql - 高效的计费数据库设计

PHP 注册表单未将凭据插入数据库

python - 在python中迭代mysql表

mysql - 确定距离 MySQL