Ms access 如果没有匹配的记录,则计数计算为零

Ms access 如果没有匹配的记录,则计数计算为零,ms-access,ms-access-2007,Ms Access,Ms Access 2007,采取以下行动: SELECT Count(a.record_id) AS newrecruits ,a.studyrecord_id FROM visits AS a INNER JOIN ( SELECT record_id , MAX(modtime) AS latest FROM visits GROUP BY record_id ) AS b ON (a.

采取以下行动:

SELECT 
    Count(a.record_id) AS newrecruits
    ,a.studyrecord_id
FROM 
    visits AS a 
INNER JOIN 
(
    SELECT 
        record_id
        , MAX(modtime) AS latest 
    FROM 
        visits 
    GROUP BY 
        record_id
)  AS b 
ON (a.record_id = b.record_id) AND (a.modtime = b.latest)
WHERE (((a.visit_type_id)=1))
GROUP BY a.studyrecord_id;
如果没有记录,我想修改
COUNT
部分以显示零,因为我假设
COUNT
将计算为
Null

我尝试了以下方法,但仍然没有结果:

IIF(ISNULL(COUNT(a.record_id)),0,COUNT(a.record_id)) AS newrecruits
这是否是因为联接在
记录\u id
上而导致的问题?我尝试将
内部
更改为
左侧
,但也没有收到任何结果

Q 如果没有与标准匹配的记录,如何使上述值计算为零

编辑:

给推理一点细节

“研究”表包含一个名为“原始招募”的字段,该字段基于数据库使用前的活动

访问表跟踪新招募的新兵(每项研究的记录计数)


我在另一个查询中组合了这些信息(原始新兵+新新兵)-如果没有新的新兵,我仍然需要显示原始新兵,因此如果没有记录,我需要将其求值为零而不是空,以便最终的总和仍然有效。

似乎您希望按StudyRecords统计记录。
如果没有记录时需要计数为零,则需要加入名为StudyRecords的表。
你有吗?否则,在没有行的情况下要求行是胡说八道

假设StudyRecords存在,那么查询应该如下所示:

SELECT 
    Count(a.record_id) AS newrecruits -- a.record_id will be null if there is zero count for a studyrecord, else will contain the id
    sr.Id
FROM 
    visits AS a 
    INNER JOIN 
    (
        SELECT 
            record_id
            , MAX(modtime) AS latest 
        FROM 
            visits 
        GROUP BY 
            record_id
    )  AS b 
    ON (a.record_id = b.record_id) AND (a.modtime = b.latest)
    LEFT OUTER JOIN studyrecord sr
        ON sr.Id = a.studyrecord_id
WHERE a.visit_type_id = 1
GROUP BY sr.Id

我通过修改最后的查询解决了这个问题,在那里我显示了合并原始和新招募人员的结果,以包括
IIF

SELECT
    a.*
    , IIF(IsNull([totalrecruits]),consents,totalrecruits)/a.target AS prog
    , IIf(IsNull([totalrecruits]),consents,totalrecruits) AS trecruits
FROM
    q_latest_studies AS a
LEFT JOIN q_totalrecruitment AS b
ON a.studyrecord_id=b.studyrecord_id
;

您的查询似乎缺少逗号。请发布可以编译的查询。当您的结果不依赖于子查询时,为什么要加入子查询?另外,您是否有单独的表格保存studyrecord详细信息?添加了逗号。该表包含同一记录的多个实例以跟踪更改-子查询选择最新的编辑日期/时间,因此选择记录的最新版本。是的,studyrecord详细信息保存在单独的表中。我对原始问题添加了更多解释。