0

我在更新 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

您能否建议我如何解决此问题并获得预期的结果?

谢谢 !

4

0 回答 0