我在更新 scd 类型 2 中产品的有效 end_date 时遇到问题,其中每日 current_flag 行具有相同的 pack_size 和 product_code。当前语句不处理它,并且由于没有匹配项而跳过该行。我的示例产品维度如下所示,例如 product_code。
产品尺寸:
我尝试加载的每日数据如下所示:
我希望看到最终结果如下所示:
但我得到的是:
我的陈述如下所示:
MERGE INTO
dim_table_product AS target_table
USING
(
SELECT product_code,
pack_size,
case_size,
end_date
FROM input_table_products
) AS source_table
ON
(
CAST(target_table.product_code AS INT) = CAST(source_table.product_code AS INT)
)
WHEN MATCHED
AND target_table.cur_flag = 1
AND (
COALESCE(target_table.pack_size, 'C0AL3SC3')
<> COALESCE(source_table.pack_size, 'C0AL3SC3')
OR COALESCE(target_table.case_size, 'C0AL3SC3')
<> COALESCE(source_table.case_size, 'C0AL3SC3')
)
THEN
UPDATE SET
target_table.updated = CURRENT_TIMESTAMP(),
target_table.end_date = source_table.end_date,
cur_flag = 0
您能否建议我如何解决此问题并获得预期的结果?
谢谢 !