如果不存在,则COUNT(field)返回0

时间:2019-05-15 23:25:38

标签: sql ms-access

听起来很简单,但是我在努力挣扎,可能是在思考。

我基本上是想弄清category字段是否为category,即Job字段中缺少的title值是什么...我正在尝试不做任何重复。

因此,在此示例中,它应该返回一些内容,指示Strategy字段的Job中没有title

尽管我最初只是做一个COUNT(),如以下示例所示:

SELECT category, COUNT(title)
FROM grid_mgmt
WHERE title = 'Job'
GROUP BY category;

但是后来很明显,它没有用,因为没有什么可计数的。

是否有什么建议可以在无计数的情况下返回0,或者是使用SQL在MS Access中解决此问题的更好方法?

enter image description here

2 个答案:

答案 0 :(得分:2)

您可以使用条件聚合:

SELECT category, SUM(IIF(title = "Job", 1, 0))
FROM grid_mgmt
GROUP BY category;

或者,如果您有单独的类别表,请使用LEFT JOIN

select c.category, count(gm.category)
from category as c left join
     grid_mgmt as gm
     on gm.category = c.category and
        gm.title = "Job"
group by c.category;

答案 1 :(得分:0)

戈登的response回答了这个问题,但由于我最终对其进行了修改,使其只返回那些= 0的内容,因此希望对其进行扩展:

SELECT category
FROM (
  SELECT category, SUM(IIF(title = "Job", 1, 0)) AS count
  FROM grid_mgmt
  GROUP BY category
)
WHERE count = 0;

以防万一这可以帮助其他人。