我有一个 SCD 类型 2 的订单表,如下所示(订单粒度中的交货日期,它在交货日期更改时创建历史记录)
Order_Id Order_Status Order_Create_Dt Delivery_Dt Start_Date End_Date
O1 Open 20200303 20200321 20203001 20200306
O1 Open 20200303 20200320 20200307 20200311
O1 Open 20200303 20200318 20200312 99991231
接下来我有一个行表,它也在下面的 type-2 行中(当数量更改或描述更改时,它有历史记录)
Order_Id Line_Item_Id Line_Item_Desc Quantity Start_Date End_Date
O1 L1 ABC 1 20200303 20200304
O1 L1 ABC 4 20200305 99991231
O1 L2 DEF 2 20200303 99991231
O1 L3 XYZ 3 20200303 99991231
现在,作为设计更改的一部分,Delivery_Dt 粒度从订单级别更改为订单项级别,并且在重新设计的订单项表历史记录中需要正确捕获订单项级别更改 + 交货日期更改,如下所示
Order_Id Line_Item_Id Line_Item_Desc Quantity Delivery_Dt Start_Date End_Date
O1 L1 ABC 1 20200321 20200303 20200304
O1 L1 ABC 4 20200321 20200305 20200306
O1 L2 DEF 2 20200321 20200303 20200306
O1 L3 XYZ 3 20200321 20200303 20200306
O1 L1 ABC 4 20200320 20200307 20200311
O1 L2 DEF 2 20200320 20200307 20200311
O1 L3 XYZ 3 20200320 20200307 20200311
O1 L1 ABC 4 20200318 20200312 99991231
O1 L2 DEF 2 20200318 20200312 99991231
O1 L3 XYZ 3 20200318 20200312 99991231
这可以简单地通过使用现有订单和行项目表的 SQL 语句来实现吗?
我正在 DB2 数据库中尝试这个。