使用 iif 函数使用 between 日期进行查询以提供 X

问题描述

我正在使用 MS 访问来创建一个查询,以确定出生日期是否介于另一个表中的开始日期和结束日期之间,如果是,请提供在与开始日期和结束日期相同的表中找到的符号。

对于每个出生日期,我一直收到 2 个结果,但不知道为什么。
任何人都可以帮助每个出生日期只有一组结果吗?
我附上了下面的代码

SELECT [TBL_IndicativeData_AllPpts].ID,[TBL_IndicativeData_AllPpts]![dob] AS dob,IIf([TBL_IndicativeData_AllPpts]![dob] Between [TBL_Mapping_Funds_TargetDate]![Earliest Birth Date] And [TBL_Mapping_Funds_TargetDate]![Latest Birth Date],[TBL_Mapping_Funds_TargetDate]![Fund Symbol],"Null") AS TargetDateFund

FROM TBL_Mapping_Funds_TargetDate,[TBL_IndicativeData_AllPpts]
WHERE (((IIf([TBL_IndicativeData_AllPpts]![dob] Between [TBL_Mapping_Funds_TargetDate]![Earliest Birth Date] And [TBL_Mapping_Funds_TargetDate]![Latest Birth Date],"Null"))<>"null"));

解决方法

这将返回符合条件的记录:

contains_diagram

但是,如果 TargetDate 表具有重叠的日期范围,您可能会收到欺骗。如果是这样,请尝试使用 SELECT [TBL_IndicativeData_AllPpts].ID,[TBL_IndicativeData_AllPpts]![DOB],[TBL_Mapping_Funds_TargetDate]![Fund Symbol] FROM [TBL_IndicativeData_AllPpts],[TBL_Mapping_Funds_TargetDate] WHERE [TBL_IndicativeData_AllPpts]![DOB] Between [TBL_Mapping_Funds_TargetDate]![Earliest Birth Date] And [TBL_Mapping_Funds_TargetDate]![Latest Birth Date]