SQL日期范围计算

时间:2012-07-19 20:36:13

标签: sql

我有两个表,一个包含日期(startdate和EndDate)和费率,另一个交易表包含日期和金额。我想在事务表中获取startdate和enddate之间的事务,并将它们除以该期间的费率。我只想使用商品代码1。例如

表费率

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

2 个答案:

答案 0 :(得分: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

你可以使用BETWEEN,但是,在某些DBMS中,如果我没错,它是独家的...

答案 1 :(得分: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