我有两个表,一个包含日期(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
答案 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