【发布时间】:2019-10-07 08:56:00
【问题描述】:
我需要使用维度表中的数据更新 FACT 表中的两列。挑战在于我没有匹配两个表的主键,所以我必须使用自然键,两列来创建唯一值。除了源有一条记录,目标有多条记录。如果我进行合并,我会得到 p>
ora-30926 无法获得稳定的行集
如果我进行更新,我会收到另一个错误。请问我需要帮助。
我试试这个更新声明:
UPDATE dw.target_table obc
SET
( obc.sail_key,
obc.durations ) = (
SELECT
sd.sail_key,
sd.durations
FROM
dw.source_table sd
WHERE
obc.code_1 = sd.code_2
AND obc.date_1 = sd.date_2
)
WHERE
obc.item NOT IN (
30,
40
)
AND obc.sail_key = 0
and OBC.load_date between to_date('01-12-2018','DD-MM-YYYY')
AND to_date ('31-12-2018','DD-MM-YYYY');
我试试这个合并语句:
MERGE INTO dw.target_table obc
USING ( SELECT distinct
code_2,date_2,durations,sail_key
FROM dw.source_table
) tb_dim
ON ( obc.code_1 = tb_dim.code_2
AND obc.date_1 = tb_dim.date_2 )
WHEN MATCHED THEN UPDATE SET obc.durations = tb_dim.durations,
obc.sail_key = tb_dim.sail_key
WHERE
obc.sail_key = 0
AND obc. NOT IN (
30,
40
)
AND obc.loaddate BETWEEN TO_DATE('01-01-2012','DD-MM-YYYY')
AND TO_DATE ('31-01-2012','DD-MM-YYYY');
【问题讨论】:
-
与 UPDATE 示例相比,您的 MERGE 示例交换了
dw.target_table和dw.source_table的角色。我已经编辑了 MERGE 示例以使其有意义。为了将来参考,在编辑代码时请注意确保成品的一致性和连贯性。您发布的内容就是我们所要做的。