簡體   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