1

日付 (startdate と EndDate) とレートを含む 2 つのテーブルがあり、もう 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 に答える