[英]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.