MySQL统计数据 GROUP BY状态,状态没有时仍显示这个状态,但数据是0

MySQL GROUP BY状态,比如状态为 0,1,2,3,4分别代表5种状态,分别起的有中文名,如果状态为4的数据没有,此时需求是group by的时候状态为4的还在,但数据是0

SELECT
CASE
submit_status
WHEN 0 THEN
'已入库'
WHEN 1 THEN
'待出库'
WHEN 2 THEN
'出库中'
WHEN 3 THEN
'已出库'
WHEN 4 THEN
'已领取'
END AS cardType,
count(*) AS cardNum
FROM
card_ssc_entrylibrary
WHERE
1 = 1
AND submit_status IN ( 0, 1, 2, 3, 4 )
AND card_type = 1
GROUP BY
submit_status;

![img](

我的解答思路和https://img-mid.csdnimg.cn/release/static/image/mid/ask/26407060666616.png "#left")

尝试过的方法

查出来的结果left join一下你需要的数据集,可以参考下这个 http://t.csdn.cn/NWpGx

你只有(0,1,2,3,4)5个状态,最后那个用else就可以了,不需要再用when 4的

SELECT
CASE
WHEN submit_status=0 THEN
'已入库'
WHEN submit_status=1 THEN
'待出库'
WHEN submit_status=2 THEN
'出库中'
WHEN submit_status=3 THEN
'已出库'
else
'已领取'
END AS cardType,
count(*) AS cardNum
FROM
card_ssc_entrylibrary
WHERE
1 = 1
AND submit_status IN ( 0, 1, 2, 3, 4 )
AND card_type = 1
GROUP BY
submit_status;