MS Access SQL语句计数使用情况

MS Access SQL语句计数使用情况,sql,ms-access,Sql,Ms Access,我是SQL新手。我得到了一个报告过去2个月使用数据的课程。有人能帮我处理SQL语句吗 SELECT COUNT(Member_ID,Non_Member_Name) AS Pool_usage_last_2_months FROM Use_of_pool WHERE DATEDIFF(‘2012-04-21’,’2012-02-21’) 我的意思是统计过去两个月的会员使用(会员ID)和非会员使用(无ID,仅限姓名)总数,然后在同一报告中输出姓名、日期和时间等。是否有任何SQL语句输出此类信息

我是SQL新手。我得到了一个报告过去2个月使用数据的课程。有人能帮我处理SQL语句吗

SELECT COUNT(Member_ID,Non_Member_Name) AS Pool_usage_last_2_months
FROM Use_of_pool
WHERE DATEDIFF(‘2012-04-21’,’2012-02-21’) 

我的意思是统计过去两个月的会员使用(会员ID)和非会员使用(无ID,仅限姓名)总数,然后在同一报告中输出姓名、日期和时间等。是否有任何SQL语句输出此类信息?欢迎更正/建议。

SQL的聚合函数使用列中的所有数据(更准确地说,是WHERE子句选择的所有数据)生成单个数据。COUNT提供与WHERE子句匹配的数据行数。例如:

SELECT COUNT(*) AS Non_members FROM Use_of_pool WHERE Member_ID IS NULL
将提供非成员使用池的次数,以及

SELECT COUNT(DISTINCT Member_ID) AS Members FROM Use_of_pool
将为您提供至少使用过该池一次的成员数(DISTINCT命令数据库引擎在计数时忽略重复项)

您可以展开WHERE子句以进一步指定要计数的内容。如果“最近两个月”是指当前和上一个日历月,您需要:

... WHERE DateDiff("m",Date_field,Date())<=1

。。。WHERE-DateDiff(“m”,Date\u字段,Date())您需要一个不同的WHERE子句。假设您的
Use\u of_pool
表包含一个日期/时间字段,
Date\u字段

WHERE date_field >= #2012-02-21# AND date_field <= #2012-04-21#
这应该限制行与我认为您想要的匹配。它应该提供快速性能,在
date\u字段上有一个索引

我不清楚你想要多少。。。无论是对所有访问(会员和非会员)进行一次计数,还是对会员和非会员进行单独计数

编辑:如果表格的每一行代表一个人的访问,您可以简单地计算行数以确定所选时间范围内的访问次数

SELECT Count(*) AS CountOfVisits
FROM Use_of_pool
WHERE date_field >= #2012-02-21# AND date_field <= #2012-04-21#

那些WHERE子句方法将强制对表的每一行执行
DateDiff()
,并且不能使用日期索引字段来优化查询计划。@HansUp这也有效:
。。。其中Date_字段>DateAdd(“m”,-2,Date())
适用于所有访问者。谢谢你的回答。因此,sql语句将是:从Use_Of_Pool WHERE date_field>=#2012-02-21#和date_field Yes中选择COUNT(Pool_Usage_ID)。我根据我的解释更新了我的答案。如果我弄错了,请告诉我。我尝试了你的方法,并且它对所有访问都是正确的。然而,我需要一个如何做会员和非会员分开计数的方法。对不起,我之前没有说清楚,谢谢你抽出时间。看看Edit2是否能满足你的需要。
WHERE date_field >= #2012-02-21# AND date_field <= #2012-04-22#
SELECT Count(*) AS CountOfVisits
FROM Use_of_pool
WHERE date_field >= #2012-02-21# AND date_field <= #2012-04-21#
SELECT
    Sum(IIf(Member_ID Is Not Null, 1, 0)) AS member_visits,
    Sum(IIf(Non_Member_Name Is Not Null, 1, 0)) AS non_member_visits
FROM Use_of_pool
WHERE date_field >= #2012-02-21# AND date_field <= #2012-04-21#