微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Access 2007:“电子计数区分”

如何解决Access 2007:“电子计数区分”

您可以尝试使用子查询来进行计数,但是在性能方面,相关的子查询往往会受到影响。

如果您愿意在两个查询(而不是一个查询)中执行此操作,那么这些将起作用:

SELECT
    s.StudyStartDateTime,
    COUNT(s.PatientId)
FROM
    dbo_Study_ViewX211_Rpt AS s
WHERE
    s.StudyStartDateTime>=Forms![StudiesPatientsByDate]!txtStartDate,
    s.StudyStartDateTime<=Forms![StudiesPatientsByDate]!txtEndDate
GROUP BY s.StudyStartDateTime, s.PatientId
ORDER BY s.StudyStartDateTime;


SELECT
    s.StudyStartDateTime,
    COUNT(s.StudyId),
FROM
    dbo_Study_ViewX211_Rpt AS s
WHERE
    s.StudyStartDateTime>=Forms![StudiesPatientsByDate]!txtStartDate,
    s.StudyStartDateTime<=Forms![StudiesPatientsByDate]!txtEndDate
GROUP BY s.StudyStartDateTime, s.StudyId
ORDER BY s.StudyStartDateTime;

请注意,我将计数的字段添加到每个字段的GROUP BY表达式中。

如果您想使其更“紧凑”,则可以为每个查询创建一个视图,并将它们加入到StudyStartDateTime上的不同查询中,以将结果全部集中在一个结果集中。

解决方法

我有一个表,其中包含StudyId,PatientId和StudyStartDateTime。我想绘制用户指定的两个日期之间的研究和患者总数。问题在于计数不同的值。这是查询:

SELECT
    s.StudyStartDateTime,COUNT(s.StudyId),COUNT(s.PatientId)
FROM
    dbo_Study_ViewX211_Rpt AS s
WHERE
    s.StudyStartDateTime>=Forms![StudiesPatientsByDate]!txtStartDate,s.StudyStartDateTime<=Forms![StudiesPatientsByDate]!txtEndDate
GROUP BY s.StudyStartDateTime
ORDER BY s.StudyStartDateTime;

此查询几乎可以正常工作,除了它会计算具有相同StudyId或相同PatientId的行的重复项。我知道Access不支持COUNT(DISTINCT
…),但是在解决此问题时遇到了很多麻烦。任何帮助将不胜感激。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。