我尝试了“mysql SELECT COUNT(*)... GROUP BY ...中没有返回计数为零的行”中给出的解决方案,但它对我不起作用。
这是SQL ::
SELECT empid, SUM (total_records) total_records
FROM (SELECT ID,
(CASE WHEN ID LIKE '2%' THEN '2____'
WHEN ID LIKE '3%' THEN '3____'
WHEN ID LIKE '99%' THEN '99____'
END) empid,
total_records
FROM tr
where ( id like '2%' or id like '3%' or id like '99%'))
GROUP BY empid;
当empid SUM中的特定值为零时,该行不会显示在输出中。这表明我们没有针对该特定empid的数据(或总和)。但是,可以在结果集中显示该特定值的“0”吗?
答案 0 :(得分:2)
为ivanpro和Michael Goldshteyn的答案添加详细信息,这是一个带有虚拟“表”的演示,其中三个所需的empid值外部连接到原始查询
SELECT a.empid, nvl(SUM (total_records),0) total_records
FROM (select '2____' empid from dual union select '3____' from dual
union select '99____' from dual) a
left outer join
(SELECT ID,
(CASE WHEN ID LIKE '2%' THEN '2____'
WHEN ID LIKE '3%' THEN '3____'
WHEN ID LIKE '99%' THEN '99____'
END) empid,
total_records
FROM tr
where ( id like '2%' or id like '3%' or id like '99%')) b
on a.empid = b.empid
GROUP BY a.empid;
答案 1 :(得分:0)
不使用此查询,您需要将其结果集与另一个查找缺失值的查询联合起来。
答案 2 :(得分:0)
我认为你正在寻找LEFT JOIN。使用它而不是嵌套的SELECT语句。我没有给你一个例子,但这website可能对你有帮助。