使用DLookup查询引用表中两个日期之间的日期



我有一个定义日期范围的表:

Reference_table:
[refID] , [start] , [end]
1       1/1/2020      3/3/2020
2       4/3/2020      7/6/2020
3       8/6/2020      10/10/2020

另一个具有日期列

Incident_table:
[IncidentID] , [incident_date]
56       1/2/2020
57       8/3/2020
58       12/5/2020

现在我想定义一个Query,它为我提供每个Incident的reference_id。我试着用

SELECT Reference_table.refID, Incident_table.IncidentID
FROM Reference_table
INNER JOIN Incident_table
ON (Reference_table.end >= Incident_table.incident_date >= Reference_table.begin);

它给了我一个空的数据集

和一个查找

SELECT 
IncidentID,
DLookup("refID";"Reference_table";"[start]<= #" & Incident_date & "# <= [end]") as reference
FROM Incident_table

这给了我所有的记录,但参考是#Error(而不是1..3(

您可以使用一个好的ol',其中join:

SELECT 
Reference_table.refID, 
Incident_table.IncidentID
FROM 
Reference_table,
Incident_table
WHERE
incident_date Between Reference_table.begin And Reference_table.end

事实证明,DLookup是正确的方法,但不同语言版本的访问会让您偏离正确的路径。作为参考,一个有效的解决方案是:

SELECT 
IncidentID,
DLookup(
"refID",
"Reference_table",
"[start]<= #" & 
Format([Incident_date],"mm/dd/yyyy") & 
"# between [start] and [end]") & 
"# <= [end]"
) as reference
FROM Incident_table

最新更新