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
这是一个问题,因为联接是record_id
?我试着将INNER
更改为LEFT
,但也没有收到任何结果。
Q 如果没有符合条件的记录,我如何获得上述评估为零?
编辑:
给一点细节推理。
研究表包含一个名为'original_recruits'的字段,它基于使用数据库之前的活动。
访问表跟踪new_recruits(每项研究的记录数)。
我把这些在另一个查询(original_recruits + new_recruits) - 如果没有新的新兵,我仍然需要显示original_recruits,所以如果没有记录我需要它评价为零而不是null,所以最终总和仍然有效。
您的查询似乎没有逗号。请发布可以编译的查询。 – IndoKnight 2013-04-05 09:02:04
当你的结果不依赖它时,你为什么要加入到子查询中?另外,你有一个单独的表,里面有studyrecord详细信息? – 2013-04-05 09:02:18
添加了逗号。该表包含跟踪更改的同一记录的多个实例 - 子查询选择最新的编辑日期/时间,因此是最新的记录版本。是将研究记录详细信息保存在单独的表中。 – 2013-04-05 09:03:26