2012-07-19 276 views
1

我有两个表,其中一个包含日期(startdate和EndDate)和费率,另一个事务表包含日期和金额。我希望在交易表中的startdate和enddate之间获得交易,并将它们的汇率除以该期间。我只想使用物品代码1。例如SQL日期范围计算

表率

startdate enddate  rate  item 
2011-01-01 2011-01-03 40.00 1 
2011-01-07 2011-01-10 10.00 1 
2011-01-07 2011-01-10 10.00 2 

表事务

date   Amount 
2011-01-01  500.00 
2011-01-02  160.00 
2011-01-02  140.00 
2011-01-03  600.00 
2011-01-07  920.00 
2011-01-10  1600.00 

结果

date   Amount 
2011-01-01  500.00/40 
2011-01-02  160.00/40 
2011-01-02  140.00/40 
2011-01-03  600.00/40 
2011-01-07  920.00/10 
2011-01-10  1600.00/10 
+0

我只想使用第1项。 – user1446930 2012-07-19 21:18:11

回答

0
SELECT t.date, t.Amount/r.Rate AS Amount 
FROM Transaction t 
INNER JOIN rate r ON t.date>=r.startdate and t.date <=r.enddate 

你可以使用之间,但在某些DBMS,如果我不是错了,它是独家...

0

您可以通过简单的连接来完成此操作。由于您使用的是日期(没有时间),并在费率表中包含结束日期,因此应执行以下操作:

select t.date, t.amount/r.rate 
from transaction t left outer join 
    rates r 
    on t.date between r.startdate and r.enddate