2016-10-04 44 views
1

在Microsoft Access中,我有一張支付表和一張表,其中包含收款人員作出的承諾。在Microsoft Access中匹配特定數據

enter image description here

我想通過ID(和日期)分配給支付表製作與債務人協議的最後收集員。

例如:在id 1111上有兩個承諾:Morticia Adams和Gulliver;但我選擇格列佛是因爲他在該日期範圍內最後承諾考慮付款日期。

同樣對於ID 5425,最後的承諾是由Marie Anne做出的,因爲23.10.2016(付款日期)在12.10.2016和26.10.2016(承諾日期)之間。

這已經在Excel中完成here,但需要在Microsoft Access中完成,因爲我有一個巨大的表和Excel需要很長時間來處理信息。

作爲一種理念,必須滿足以下條件:

  • 在承諾表中的行的支付ID等於支付表的支付ID。
  • 付款日期大於或等於會話日期。
  • 付款日期少於或等於約定的付款日期。

如果有人能給我一個提示,我會很感激。

+0

這不是一個工作板,上面 「僱」 人幫你。您編寫代碼,我們(可能)嘗試幫助解決它。 –

+0

這不是一個簡單的內部連接,我沒有ideea如何做到這一點。也許你可以給我一個提示馬克B. – redviper2100

回答

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); 

談到了這樣的:

Screenshot of query results

+0

你是一個天才!謝謝! – redviper2100

+0

很高興爲你效勞。當你描述你的數據和目標時非常有用 – dbmitch