Sql 具有内部联接的MS访问计数

Sql 具有内部联接的MS访问计数,sql,ms-access,Sql,Ms Access,被一个问题难住了,这个问题涉及一个MS ACCESS数据库和两个表,试图通过计数获得两个不同的记录结果 我正在处理的两个表都有一个主键字段和一个字段,如果记录被标记为删除,则该字段将保留一个1或0 问题是,我无法从这个查询中获取总计数和差异,我只能检索所有记录的计数,而不仅仅是未标记为删除的记录的计数 示例类别有两条与之关联的内容记录,但一条在删除字段中有1,另一条有0。我正在尝试获取数据 我尝试使用SUM,但在使用时收到MS ACCESS的错误。这是我在下面使用的当前查询字符串 澄清一下,这样

被一个问题难住了,这个问题涉及一个MS ACCESS数据库和两个表,试图通过计数获得两个不同的记录结果

我正在处理的两个表都有一个主键字段和一个字段,如果记录被标记为删除,则该字段将保留一个1或0

问题是,我无法从这个查询中获取总计数和差异,我只能检索所有记录的计数,而不仅仅是未标记为删除的记录的计数

示例类别有两条与之关联的内容记录,但一条在删除字段中有1,另一条有0。我正在尝试获取数据

我尝试使用SUM,但在使用时收到MS ACCESS的错误。这是我在下面使用的当前查询字符串

澄清一下,这样做的原因是,一旦我从记录集中获取数据,我就可以得到这两个结果,并在客户端处理差异

一个类别可能有多个内容,与每个类别关联的某些内容可能有标记为删除的某些记录,而其他内容可能没有

下面是我正在使用的SQL

 Count(CONTENT.contentId) as cntDifference SUM(CASE WHEN cntDifference = 1 
 then 1 else 0) has also not proven to be successful.

 SELECT CATEGORY.categoryId, CATEGORY.categoryTitle, CATEGORY.categoryDate, 
 Count(CONTENT.contentId) AS cntTotal, Last(CONTENT.contentDate) AS cntDate, 
 CATEGORY.isDeleted AS catDel 
 FROM CATEGORY 
 LEFT JOIN CONTENT ON CATEGORY.categoryId = CONTENT.categoryId
 GROUP BY CATEGORY.categoryId, CATEGORY.categoryTitle, 
 CATEGORY.categoryDate, CATEGORY.userLevel, CATEGORY.isDeleted HAVING 
 (((CATEGORY.isDeleted)=0))
 ORDER BY CATEGORY.categoryTitle
过滤掉已删除的记录,使未删除的计数与所有记录计数相同

要获取已删除/未删除的计数,请将其删除并使用:

SUM(IIF(CATEGORY.isDeleted=0,1,0)) AS CountOfNonDeleted
对于未删除的


用于删除。您还可以使用这些表达式来获取总计数、已删除计数和未删除计数之间的差异。

编辑问题以显示样本数据和样本所需输出。也许您应该在聚合表达式中应用筛选条件或IIf:CountIIf[isDeleted]=1[contentID],NullSUM返回了不正确的结果,尽管将COUNT与这些表达式一起使用会产生正确的结果,包括总计、已删除和未删除计数之间的差异。
SUM(IIF(CATEGORY.isDeleted=0,1,0)) AS CountOfNonDeleted
SUM(IIF(CATEGORY.isDeleted=1,1,0)) AS CountOfDeleted