根据日期范围查询

时间:2014-07-11 19:40:00

标签: sql ms-access access-vba

我有两张桌子。表-A填充了事务数据。表B是给定特定周的费率的参考表。我想根据表B中列出的一周内的日期,将表B中的比率从表B中获得。我尝试了多种查询技术,并且所有这些技术都落在了他们的脸上。任何帮助将不胜感激。

Table B
Start_Date  End_Date    Rate
12/30/2013  1/5/2014    $1.20 
1/6/2014    1/12/2014   $1.25 
1/13/2014   1/19/2014   $2.22 
1/20/2014   1/26/2014   $2.23 
1/27/2014   2/2/2014    $2.11 


Table A
ID  Date      Rate
1   1/1/2014    
2   1/11/2014   
3   1/21/2014   
4   1/10/2014   
5   1/15/2014   
6   1/22/2014   
7   1/20/2014   
8   1/3/2014    
9   1/2/2014    
10  1/4/2014

4 个答案:

答案 0 :(得分:0)

试试这个:

select b.rate from a,b where a.date <= b.end_date and a.date >= b.start.date

OR

select b.rate from a,b where a.date between b.start_date and  b.end_date

答案 1 :(得分:0)

一些事情。首先,我假设您在B的第一次约会实际上是12/30/13。

然后,date是一个保留字,所以它在表A中不是一个好的列名。我在我的例子中将它重命名为DateA。

最后,这是一个返回该日期费率的查询。它不会更新表A,但它应该为您提供所需的操作:

SELECT [Table B].Rate, [Table A].DateA
FROM [Table A], [Table B]
WHERE ((([Table A].DateA) Between [start_date] And [end_date]));

答案 2 :(得分:0)

UPDATE A, B SET A.Rate = [B].[Rate]
WHERE (([A].[DT] Between [B].[StartDate] And [B].[EndDate]));

我将A.Date更改为A.DT,因为Date是Access中的保留字。

答案 3 :(得分:-1)

您是否考虑过通过代码执行此操作? My Access术语有点生疏,但我相信它将基于表A(Transact-SQL中的“光标”)称为“打开数据集”。然后你可以遍历它并对每一行进行SQL搜索。