【发布时间】:2018-10-15 13:36:03
【问题描述】:
使用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 而不是 COUNT - 在您计算 0 和 1 的那一刻,它们都算作 1 - 所以 SUM 1 和 0 可以得到您似乎需要的答案
标签: database ms-access jet-sql