我将如何验证 table 中的列值并合并到另一个 table

How will I be able to validate the column value from the table and merge into the another table

CREATE TABLE c_file (
    e_id   NUMBER(10),
    ac_ec  VARCHAR2(100),
    constraint pk_c_file primary key(e_id)
);

insert into c_file values(1,'A');
insert into c_file values(2,'A');
insert into c_file values(3,'E');
insert into c_file values(4,'A');
insert into c_file values(5,'E');

CREATE TABLE e_staging (
    e_id   NUMBER(10),
    ac_ec  VARCHAR2(100)
);

insert into e_staging values(1,null);
insert into e_staging values(2,null);
insert into e_staging values(3,null);
insert into e_staging values(4,null);
insert into e_staging values(5,null);
insert into e_staging values(6,null);
insert into e_staging values(7,null);
insert into e_staging values(8,null);
insert into e_staging values(9,null);
insert into e_staging values(10,null);

CREATE TABLE e_details (
    e_id   NUMBER(10),
    ac_ec  VARCHAR2(100)
);

合并:

MERGE INTO e_details m
USING (
          SELECT
              e_id,
              ac_ec
          FROM
              e_staging
      )
s ON ( m.e_id = s.e_id )
WHEN MATCHED THEN UPDATE
SET m.ac_ec = s.ac_ec
WHEN NOT MATCHED THEN
INSERT (
    e_id,
    ac_ec )
VALUES
    ( s.e_id,
      s.ac_ec );

问题:

通过此合并,它将从 e_staging table 加载所有数据,但在加载时 如果 e_id 出现在 c_file 和 e_staging table 中,它应该检查 e_id 到 c_file table 然后它应该根据 c_file ac_ec 列更新 ac_ec 列,如果 e_id 不存在于 e_staging 那么 它应该更新为 'E'.

当前输出:

预期输出:

对于 e_id 1 - 从 e_staging table 加载到 e_details table。它应该检查 c_file table。如果存在 e_id,则应将 ac_ec 列更新为 A。 同样对于所有 e_id 直到 5.

从 e_id 6 到 10。这些不存在于 c_file 中,因此值将更新为 'E'。

工具:SQL开发人员 版本:20.4

MERGE 语句的 USING 块中加入 c_file。

MERGE INTO e_details m
USING (
        SELECT
            e.e_id,
            NVL(c.ac_ec,'E') AS ac_ec
        FROM
            e_staging e LEFT OUTER JOIN c_file c ON e.e_id = c.e_id  
      )
s ON ( m.e_id = s.e_id )
WHEN MATCHED THEN UPDATE
SET m.ac_ec = s.ac_ec
WHEN NOT MATCHED THEN
INSERT (
    e_id,
    ac_ec )
VALUES
    ( s.e_id,
      s.ac_ec );