【发布时间】:2014-12-22 11:11:21
【问题描述】:
我有这两张表:
表 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 |
表 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 |
我需要加入两个表 WHERE Table2.SignUpDate BETWEEN Table1.StartDate AND Table1.EndDate,然后我需要表 2 中 distinct 的 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)
但我无法获得上述输出,因为我需要在 MS ACCESS 2003 中执行此操作。 请帮我。
这是我的旧代码,但不包括 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;
非常感谢您的所有帮助。提前致谢。
【问题讨论】:
-
“COUNT(DISTINCT [Agent Id])”是否在 MS Access 中工作?在 SQL Server 中这将是解决方案,但我不知道所有访问限制。
-
很遗憾,Access 不支持该 Count(Distinct *)。 :(
标签: sql ms-access-2003