Если я правильно понимаю, в Oracle 12c + вы можете использовать:
insert into a (date, sales)
select date, sales
from b
where b.date > (select max(a.date) from a)
order by date desc
fetch first 1 row only;
order by
и fetch
гарантируют, что вставлена только самая последняя строка.
В более ранних версиях вы можете использовать подзапрос:
insert into a (date, sales)
select date, sales
from (select b.*, row_number() over (order by date desc) as seqnum
from b
where b.date > (select max(a.date) from a)
) b
where seqnum = 1;
Примечание: если вы будете запускать этот код каждый день, вы просто вставите каждую строку b
в a
. Я полагаю, вы знаете об этом.