请给我任何建议。
我需要打印出包括“ 0”的内容。
例如,我想执行以下操作,其中包括值“ d”和“ 0”,但我的实际查询仅打印到第三行(c,3)
des num
---------
a 1
b 2
c 3
d 0
这是我的代码
SELECT des, COUNT(*) AS num
FROM table
WHERE color = 'Red' AND day = 17
GROUP BY des
非常感谢您提出任何建议
答案 0 :(得分:0)
使用‘coalesce’...我很确定那里有很多例子。 试试这个
select coalesce(des, 0) as num
答案 1 :(得分:0)
SQL语句中的WHERE
子句将要分组的行数限制为具有color='Red' and day=17
的行。
在返回要分组的行中,没有任何des='d'
行,这就是为什么要得到此结果的原因。
以下语句获取您的语句获取的所有行以及color='Red' and day=17
排除的行:
SELECT des, COUNT(*) AS num FROM table
WHERE color='Red' and day=17 GROUP BY des
union
SELECT DISTINCT des, 0 AS num FROM table
WHERE des NOT IN (SELECT des FROM table WHERE color='Red' and day=17)
答案 2 :(得分:0)
仅使用条件聚合:
SELECT des,
SUM(CASE WHEN color = 'Red' AND day = 17 THEN 1 ELSE 0 END) AS num
FROM table
GROUP BY des;
这可能是实现所需目标的最简单方法。