我在VBA中使用ADO SQL来尝试并需要以下示例的解决方案:
表
ID Effective Date of Documentation
1 1/1/2015
2 6/1/2015
3 1/1/2016
4 6/1/2016
在上面的示例中,ID 1的文档从2015年1月1日到2015年5月31日生效,ID 2从2015年6月1日到2015年12月31日生效,因此向前。因此,如果我的日期是8/1/2015,那么我需要返回文档生效的记录。因此,在此示例中,将返回ID 2的记录。我需要一些SQL来实现这一点,我无法弄清楚如何!有任何想法吗?这可能与此结构有关,还是我需要首先为结束日期创建一些人工列并查询?
答案 0 :(得分:0)
您可以这样做:
select t.*
from table t
where effdate < @date
order by effdate desc
fetch first 1 row only;
这是SQL标准语法。不同的数据库可能有不同的语法来选择一行。
编辑:
在MS Access中,您可以:
select TOP 1 t.*
from t
where effdate < @date
order by effdate desc;