トランザクション テーブルと SCD テーブルを結合して、トランザクションの日付に従って SCD からレコードを取得する方法。
Select A.id, A.trans_dt, trans_amt, B.pmt_meth
from trans1 A
left join scd1 B
on A.id=B.id
ここで、トランザクションごとに pmt_meth を取得する必要があります。したがって、最初の 2 つのトランザクションの pmt_meth は「M」で、最後のトランザクションは「P」である必要があります。
これは結合の問題のために重複を作成していますが(私はそれを知っています)、日付を一致させる方法がわからないため、重複が作成されず、望ましい結果が得られます
create table scd1 (id integer, pmt_meth varchar (10), start_dt date, end_dt date)
Insert into scd1(1, P, '2015/06/30', '2017/05/30')
Insert into scd1(1, M, '2017/05/30', '2019/07/31')
Insert into scd1(1, P, '2019/07/31', '2050/12/31')
Create table trans1 (id integer, trans_dt date, trans_amt float)
Insert into trans1 (1, '2019/07/25', 100)
Insert into trans1 (1, '2019/07/01', 120)
Insert into trans1 (1, '2019/07/31', 50)
ここで、トランザクションごとに pmt_meth を取得する必要があります。したがって、最初の 2 つのトランザクションの pmt_meth は「M」で、最後のトランザクションは「P」である必要があります。
Select A.id, A.trans_dt, trans_amt, B.pmt_meth
from trans1 A
left join scd1 B
on A.id=B.id
期待される結果は
id trans_dt trans_amt pmt_meth
1 '2019/07/25' 100 M
1 '2019/07/01' 120 M
1 '2019/07/31' 50 P