简体   繁体   English

在MS Access中计算开始日期和结束日期之间的不同项目

[英]Count distinct items between start date and end date in MS Access

I have these two tables: 我有这两个表:

Table 1 表格1

| EventCode | StartDate |  EndDate  | Client |
|   13400   | 1/12/2014 | 5/12/2014 |   ABC  |
|   13400   | 6/12/2014 | 8/12/2014 |   ABC  |
|   15600   | 3/12/2014 | 5/12/2014 |   ABC  |

Table 2 表2

| EventCode | Client | SignUpDate | Agent |
|   13400   |   ABC  |  2/12/2014 | AG001 |
|   13400   |   ABC  |  2/12/2014 | AG001 |
|   13400   |   ABC  |  3/12/2014 | AG002 |
|   15600   |   ABC  |  4/12/2014 | AG002 |
|   15600   |   ABC  |  4/12/2014 | AG004 |
|   15600   |   ABC  |  5/12/2014 | AG002 |
|   13400   |   ABC  |  7/12/2014 | AG003 |

I need to join the two tables WHERE Table2.SignUpDate BETWEEN Table1.StartDate AND Table1.EndDate , then I need a distinct count of Agents from Table 2, to get how many distinct persons did sales for every event, like the one below: 我需要将两个表连接到WHERE Table2.SignUpDate BETWEEN Table1.StartDate AND Table1.EndDate ,然后我需要从表2中获得不同数量的Agent,以获取每个事件有多少不同的人进行了销售,如下图所示:

| EventCode | StartDate |  EndDate  | Client |  CountOfDistinctAgents |
|   13400   | 1/12/2014 | 5/12/2014 |   ABC  |           2            | //(AG001, AG002)
|   13400   | 6/12/2014 | 8/12/2014 |   ABC  |           1            | //(AG003)
|   15600   | 3/12/2014 | 5/12/2014 |   ABC  |           2            | //(AG002, AG004)

But I am having trouble getting the above output because I need to do this in MS ACCESS 2003 . 但是我很难获得上述输出,因为我需要在MS ACCESS 2003中执行此操作。 Please help me. 请帮我。

This is my old code, but it doesn't count the DISTINCT agents. 这是我的旧代码,但不包括DISTINCT代理。

SELECT tmp.[Event Code], eb.CampaignLN, eb.StartDate, eb.EndDate, COUNT(*) AS HeadCount
FROM 
(SELECT DISTINCT [Event Code], Campaign, [Signup Date], [Agent Id] FROM [Main Table2]) AS tmp 
INNER JOIN qryGetEventBookings AS eb ON (tmp.[Signup Date] BETWEEN CDATE(eb.StartDate) AND  
CDATE(eb.EndDate)) AND (eb.CampaignLN=tmp.Campaign) AND (eb.LocationCode=tmp.[Event Code])
GROUP BY tmp.[Event Code], eb.CampaignLN, eb.StartDate, eb.EndDate;

I greatly appreciate all of your help. 非常感谢您的帮助。 Thanks in advance. 提前致谢。

To count the distinct agents, you need to use a subquery (because MS Access does not support count(distinct) ). 要计算不同的代理,您需要使用子查询(因为MS Access不支持count(distinct) )。 The result is something like this: 结果是这样的:

SELECT [Event Code], COUNT(*) AS NumAgents
FROM (SELECT DISTINCT m.EventCode, eb.Agent
      FROM  [Main Table2] as m JOIN
            qryGetEventBookings eb
            ON eb.CampaignLN = m.Campaign AND eb.LocationCode = m.[Event Code] AND
               eb.SignUpDate BETWEEN m.StartDate AND m.EndDate
     ) AS tmp 
GROUP BY [Event Code];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM