1

我有两张表,一张包含日期(开始日期和结束日期)和费率,另一张交易表包含日期和金额。我想在事务表中获取 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
4

2 回答 2

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 中,如果我没记错的话,它是专有的……

于 2012-07-19T20:41:21.563 回答
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
于 2012-07-19T20:42:04.537 回答