create table TEST
(
job_id integer
,etl_job_run_day date
,cust_sid integer
,cust_id number(38,0)
,cust_first_name varchar2(100)
,cust_last_name varchar2(100)
,effective_dt_from date
,effective_dt_to date
,version integer
,latest_fl varchar2(1)
,actual_cust_id integer
);
insert into abc values (123,02.03.20 00:00:00,100,6842,'Adam','Zampa',26.02.20 00:00:00,02.03.20 00:00:00,1,'N','');
insert into abc values (123,06.03.20 00:00:00,143,6842,'Tony','Greig',02.03.20 00:00:00,31.12.99 00:00:00,2,'Y',9011);
Текущая ситуация
JOB_ID ETL_JOB_RUN_DAY CUST_SID CUST_ID CUST_FIRST_NAME CUST_LAST_NAME EFFECTIVE_DATE_FROM EFFECTIVE_DATE_TO VERSION LATEST_FL ACTUAL_CUST_ID
123 02.03.20 00:00:00 100 6842 Adam Zampa 26.02.20 00:00:00 02.03.20 00:00:00 1 N
123 06.03.20 00:00:00 143 6842 Adam Zampa 02.03.20 00:00:00 31.12.99 00:00:00 1 Y 9011
Ожидаемое решение будет
JOB_ID ETL_JOB_RUN_DAY CUST_SID CUST_ID CUST_FIRST_NAME CUST_LAST_NAME EFFECTIVE_DATE_FROM EFFECTIVE_DATE_TO VERSION LATEST_FL ACTUAL_CUST_ID
123 02.03.20 00:00:00 100 6842 Adam Zampa 26.02.20 00:00:00 02.03.20 00:00:00 1 N **9011**
123 06.03.20 00:00:00 143 6842 Adam Zampa 02.03.20 00:00:00 31.12.99 00:00:00 1 Y 9011
поэтому ранее историческое обновление не было сделано должным образом. поэтому у меня в основном две версии, такие же, как и выше, у меня есть несколько сотен записей в этой ситуации ACTUAL_CUST_ID в настоящее время имеет значения NULL, поэтому необходимо обновить все записи, в которых ACTUAL_CUST_ID имеет значение NULL, и обновить значение другой версии для пример 9011 должен быть обновлен там, где у нас есть ноль.
, поскольку, как я уже упоминал, существует множество таких записей, поэтому мне нужно придумать оператор слияния, использующий функцию запаздывания или опережения для исправления всех записей, может ли любой один предоставит мне лучшее решение?