如何解决如何使用另一个表目标更新一个表源中的 2 列
我有一个名为 Edwin.psp_labor_schd_day_f_rollup_frs_356 的源表和一个名为 EDWIN.PSP_LABOR_SCHD_DAY_F_ROLLUP 的目标表,我需要更新从源到目标的日期值。 2 个日期列是 SRC_CREATED_DATE 和 SRC_LAST_UPDATE_DATE。基于以下 on 子句
A.PAY_RANGE_START_DATE_KEY = B.PAY_RANGE_START_DATE_KEY AND
A.AA_PERSON_NATURAL_KEY = B.AA_PERSON_NATURAL_KEY AND
A.AA_PERSON_ASSIGNMENT_KEY = B.AA_PERSON_ASSIGNMENT_KEY AND
A.SCHEDULE_LINE_ID = B.SCHEDULE_LINE_ID
如何做到这一点?
我们正在使用的合并代码
MERGE
/*+ parallel(A) enable_parallel_dml*/
INTO
(
SELECT
PAY_RANGE_START_DATE_KEY,AA_PERSON_NATURAL_KEY,AA_PERSON_ASSIGNMENT_KEY,SCHEDULE_LINE_ID,SRC_CREATED_DATE,SRC_LAST_UPDATE_DATE
FROM
EDWFIN.PSP_LABOR_SCHD_DAY_F_ROLLUP
)
A USING
(
SELECT
pay_range_start_date_key,aa_person_natural_key,aa_person_assignment_key,schedule_line_id,MAX(src_created_date) src_created_date,MAX(src_last_update_date) src_last_update_date
FROM
edwfin.psp_labor_schd_day_f_rollup_frs_356
GROUP BY
pay_range_start_date_key,schedule_line_id
)
B ON
(
A.PAY_RANGE_START_DATE_KEY = B.PAY_RANGE_START_DATE_KEY AND
A.AA_PERSON_NATURAL_KEY = B.AA_PERSON_NATURAL_KEY AND
A.AA_PERSON_ASSIGNMENT_KEY = B.AA_PERSON_ASSIGNMENT_KEY AND
A.SCHEDULE_LINE_ID = B.SCHEDULE_LINE_ID
)
WHEN MATCHED THEN
UPDATE
SET
A.SRC_CREATED_DATE = B.SRC_CREATED_DATE,A.SRC_LAST_UPDATE_DATE = B.SRC_LAST_UPDATE_DATE
WHERE
A.SRC_CREATED_DATE <> B.SRC_CREATED_DATE
OR A.SRC_LAST_UPDATE_DATE <> B.SRC_LAST_UPDATE_DATE;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。