繁体   English   中英

COUNT,IIF用于计数也具有匹配的特定字段值的记录的用途

[英]COUNT, IIF usage for counting records that also have a specific field value matched

使用MS Access,我有两个表,一个是类别,另一个是内容。

我的初始SQL语句(包含在下面)对与类别关联的每个内容进行计数,并返回与每个类别关联的计数。

因此,对于每个CATEGORY,我只是试图返回另一个计数,在该计数中,我对具有特定用户级别且未针对每个CATEGORY删除的CONTENT进行计数。

以下是我正在努力解决的问题,因为我不确定您是否可以像这样实际使用COUNT。

 COUNT(IIf([CONTENT.isDeleted]=0,1,0)) - COUNT(IIf([CONTENT.userLevel]=2)) AS userLevelCount

这是带有我的补充的完整选择语句,但不起作用。

 SELECT

 CATEGORY.categoryId,
 CATEGORY.categoryTitle,
 CATEGORY.categoryDate,
 CATEGORY.userLevel,
 Last(CONTENT.contentDate) AS contentDate,
 CATEGORY.isDeleted AS categoryDeleted,
 COUNT(IIf([CONTENT.isDeleted]=0,1,0)) AS countTotal,
 COUNT(IIf([CONTENT.isDeleted]=1,[CONTENT.contentID],Null))           AS countDeleted,
 COUNT([CONTENT.categoryId]) -      COUNT(IIf([CONTENT.isDeleted]=1,[CONTENT.contentID],Null))AS countDifference,


 COUNT(IIf([CONTENT.isDeleted]=0,1,0)) - COUNT(IIf([CONTENT.userLevel]=2)) AS userLevelCount

 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([CONTENT.isDeleted]=0,1,0)) - COUNT(IIf([CONTENT.userLevel]=2,1,NULL)) AS userLevelCount

COUNT不会计数为NULL,但会计数为零。 SUM将计算所有1的总和-这是实现相同总和的第二种方法。

IIF存在于较新的SQL版本中

我相信我找到了解决方案

 Count(IIf([CONTENT.userLevel]=2,[CONTENT.contentID],Null)) AS countDifference2

这将返回未删除且具有特定用户级别的每个CATEGORY的CONTENT的计数差异。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM