如何连接事务表和 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