sql - MySQL:数据透视+计数

标签 sql mysql database pivot aggregate-functions

我需要有关将转换此表的 SQL 的帮助:

===================
| Id | FK | Status|
===================
| 1  | A  | 100   |
| 2  | A  | 101   |
| 3  | B  | 100   |
| 4  | B  | 101   |
| 5  | C  | 100   |
| 6  | C  | 101   |
| 7  | A  | 102   |
| 8  | A  | 102   |
| 9  | B  | 102   |
| 10 | B  | 102   |
===================

为此:

==========================================
| FK | Count 100 | Count 101 | Count 102 |
==========================================
| A  | 1         | 1         | 2         |
| B  | 1         | 1         | 2         |
| C  | 1         | 1         | 0         |
==========================================

我可以进行如此简单的计数等,但我正在努力尝试使用派生的信息来旋转表格。感谢您的帮助。

最佳答案

使用:

  SELECT t.fk,
         SUM(CASE WHEN t.status = 100 THEN 1 ELSE 0 END) AS count_100,
         SUM(CASE WHEN t.status = 101 THEN 1 ELSE 0 END) AS count_101,
         SUM(CASE WHEN t.status = 102 THEN 1 ELSE 0 END) AS count_102
    FROM TABLE t
GROUP BY t.fk

关于sql - MySQL:数据透视+计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3561881/

相关文章:

php - 处理 PDO::prepare() 添加的引号

sql - 过滤 SQL 列中仅包含数字数据的行

mysql - SQL 约束检查 <>

mysql - 选择计数(*)... mysql

脚本的mysql脚本

mysql - 如何在多个表中插入数据

database - 如何有效地存储计划日期?

mysql - 使用mysql查询创建对象

sql - 选择多列分组为一?

mysql - 更改 MySQL 数据库的编码