mysql - 如何将状态列中的内容显示为数据库中的标题

标签 mysql mariadb pivot-table

从Mysql数据库中找到下面的数据,根据这个数据,当我用手机号码统计状态时,我需要将“状态”显示为行的标题,并且“计数”应该显示在状态下方。

**cust_mob_no       status**

918072740683    unattended
918072740683    closed
918072740683    NotApplicable
918072740683    Assigned
918072740683    NotApplicable
918072740683    open
918072740683    open

如何显示如下所示的数据?

unattended  closed  NotApplicable   Assigned    open
   1          1           2           1           2

最佳答案

你可以像这样使用选择大小写

SELECT
    mobileNumber,  
    SUM(CASE WHEN (statusName='unattended') THEN 1 ELSE 0 END) AS unattended,
    SUM(CASE WHEN (statusName='closed' ) THEN 1 ELSE 0 END) AS closed,
    SUM(CASE WHEN (statusName='NotApplicable') THEN 1 ELSE 0 END) AS NotApplicable,
    SUM(CASE WHEN (statusName='Assigned') THEN 1 ELSE 0 END) AS Assigned
FROM 
    MyTable
GROUP BY 
    mobileNumber

DBFiddle Sample Code

您可以使用数据透视表。示例查询

SELECT [unattended], [closed],[NotApplicable],[Assigned],[open] FROM   
(SELECT [mobileNumber],[status] FROM MyTable )Tab1  
PIVOT  
(  
COUNT([mobileNumber]) FOR status IN ([unattended], [closed],[NotApplicable], 
[Assigned],[open])) AS Tab2  

DB Fiddle Sample Code

关于mysql - 如何将状态列中的内容显示为数据库中的标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51036706/

相关文章:

mysql - 回滚过程插入

php - MySQL - 为具有层次结构的项目输出正确的顺序?

MySQL - 将现有部分文本与全文匹配

mysql - MySQL UPDATE 的 WHERE 子句中的条件无效 - 更新了所有内容 - 而不是没有

mysql - Laravel 5.8 多对多关系使用数据透视表的自定义列名称

python - 从 DateTimeIndex 的 1 列中减去另一列会引发 ValueErrors 和 TypeErrors

javascript - 如何将 SQL 数据库中的数据显示到 PHP/HTML 表中

php - 嵌套集添加点头得到错误

MySQL 数据在 Toad Edge 中可见,但在 CLI 中不可见

python-3.x - 数据透视表中每个级别的小计