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>
我有一个 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>