我想做一件简单的事情而失败......
基本上我想根据一些值检查一个表中存在多少条目,与另一个表上的条目进行比较,并根据此比较计算第一个表的总条目数。
SELECT COUNT(*)
FROM contacts c
INNER JOIN projects p ON p.ContactId = c.ContactId
WHERE c.TypeofContactId = '2'
AND p.CategoryId NOT IN (2,5)
这是什么意思?我有2个表,一个有我与客户的联系人,另一个是基于这些联系人创建的项目。
c.TypeofContactId 是什么类型的联系人(电话,电子邮件等)
p.CategoryId 是创建的项目类型。可以有50种类型。
这些项目附有'基于 ContactId 的联系人。
我想计算针对特定类型完成的所有联系人,但仅限于项目类别不是2或5.(所以其他任何事情......)
因此,如果它找不到c.type = 2的任何项目(不是2或5类型),我应该得到0个计数。
我在这里做错了什么?
感谢。
答案 0 :(得分:3)
你可以这样做:
SELECT SUM(CASE WHEN p.CategoryId NOT IN (2,5) THEN 1 ELSE 0 END) AS TotalCount
FROM contacts c
INNER JOIN projects p ON p.ContactId = c.ContactId
WHERE c.TypeofContactId = '2'
当您将p.CategoryId NOT IN (2,5)
放在where子句中时,您将只获得符合此条件的行。