我有一个定义日期范围的表:
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