Oracle SQL - 根据列递增序列

Oracle SQL - increment the sequence based on column

我有一个 table:

ITEM_EXPENSES 有列:

ITEM | SUPPLIER | SEQ_NO | COUNTRY
100      A10        1       UAE
100      A10        2       SAU

我有另一个 table 具有相同的结构 ITEM_EXPENSES_DELTA

ITEM | SUPPLIER | SEQ_NO | VALUE
100      A10        1       USA
100      A10        2       THA

我想将 ITEM_EXPENSES_DELTA 插入 ITEM_EXPENSES,但唯一键位于 ITEM、SUPPLIER、SEQ_NO

我希望数据如下:

ITEM | SUPPLIER | SEQ_NO | VALUE
100      A10        1       UAE
100      A10        2       SAU
100      A10        3       USA
100      A10        4       THA

seq_no 应该是 ITEM_EXPENSES

中已经存在的下一个数字

应该插入什么

这是一种选择:

示例数据:

SQL> select * from item_expenses;

      ITEM SUP     SEQ_NO COU
---------- --- ---------- ---
       100 A10          1 UAE
       100 A10          2 SAU

SQL> select * from item_expenses_delta;

      ITEM SUP     SEQ_NO COU
---------- --- ---------- ---
       100 A10          1 USA
       100 A10          2 THA

插入:

SQL> insert into item_expenses (item, supplier, seq_no, country)
  2  with ms as
  3    (select max(seq_no) maxseq from item_expenses)
  4  select d.item, d.supplier, s.maxseq + rownum, country
  5  from item_expenses_delta d cross join ms s;

2 rows created.

结果:

SQL> select * from item_expenses;

      ITEM SUP     SEQ_NO COU
---------- --- ---------- ---
       100 A10          1 UAE
       100 A10          2 SAU
       100 A10          3 USA
       100 A10          4 THA

SQL>