[英]Count distinct items between start date and end date in MS Access
我有這兩個表:
表格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中獲得不同數量的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;
非常感謝您的幫助。 提前致謝。
要計算不同的代理,您需要使用子查詢(因為MS Access不支持count(distinct)
)。 結果是這樣的:
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.