在Microsoft Access中,我有一张付款表和一张表,其中包含了收集人员的承诺。
我想通过id(和日期)向与债务人达成协议的最后一位收款官分配到付款表。
例如:在id 1111,有两个承诺:Morticia Adams和Gulliver;但我选择了格列佛,因为他在该日期范围内考虑到付款日期做出了最后的承诺。
同样,对于id 5425,最后的承诺是由Marie Anne做出的,因为2016年10月23日(付款日期)是在2016年10月12日至2016年10月26日(承诺日期)之间。
这已经在Excel中完成here但是需要在Microsoft Access中完成,因为我有一个庞大的表,Excel需要很长时间来处理信息。
作为一个想法,它必须满足以下条件:
- 承诺表中行的付款ID等于付款表的付款ID。
- 付款日期大于或等于通话日期。
- 付款日期小于或等于约定的付款日期。
如果有人能给我一个提示,我将非常感激。
答案 0 :(得分:1)
理想情况下,您可以使用内部联接将查询拆分为两个查询,但您可以使用一个查询。
使用此:
SELECT [Payments Table].ID, [Payments Table].[Date of Payment], [Payment Promises Table].[Collection Officer]
FROM ([Payments Table]
INNER JOIN
( SELECT [Payments Table].ID, Max([Payment Promises Table].[Date of conversation]) AS LastDate
FROM [Payments Table] INNER JOIN [Payment Promises Table] ON [Payments Table].ID = [Payment Promises Table].ID
WHERE ((([Payments Table].[Date of Payment]) Between [Date of Conversation] And [Date Agreed to Pay]))
GROUP BY [Payments Table].ID) AS FindOfficer
ON [Payments Table].ID = FindOfficer.ID)
INNER JOIN [Payment Promises Table]
ON (FindOfficer.LastDate = [Payment Promises Table].[Date of conversation])
AND (FindOfficer.ID = [Payment Promises Table].ID);
想出来: