SQL日期范围计算
问题描述:
我有两个表,其中一个包含日期(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
答
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,如果我不是错了,它是独家...
答
您可以通过简单的连接来完成此操作。由于您使用的是日期(没有时间),并在费率表中包含结束日期,因此应执行以下操作:
select t.date, t.amount/r.rate
from transaction t left outer join
rates r
on t.date between r.startdate and r.enddate
我只想使用第1项。 – user1446930 2012-07-19 21:18:11