oracle 向同一个表中插入多行数据

时间:2022-09-20 20:37:04
在数据库中,有表Waste,ACCOUNT_BALANCE,
create table WASTE
(
  ID             NUMBER(18) not null,
  ACC_ID         VARCHAR2(20),
  SUB_CODE       VARCHAR2(8),
  AMOUNT         NUMBER(18),
  CDDIRC         CHAR(1),
  WST_TIME       DATE,
  SETT_FLAG      CHAR(1) default '0' not null
)
create table ACCOUNT_BALANCE
(
  AUTO_ID           NUMBER(18) not null,
  TYPE              CHAR(1),
  ACC_ID            VARCHAR2(20),
  SUB_CODE          VARCHAR2(8),
  AMOUNT_DEBIT      NUMBER(18),
  AMOUNT_CREDIT     NUMBER(18),
  BALANCE_DEBIT     NUMBER(18),
  BALANCE_CREDIT    NUMBER(18)
)
我要向表中插入批量插入数据,用的插入语句类似:
 insert into waste(id,acc_id,sub_code,
          amount,cddirc,wst_time,sett_flag)
          select waste_seq_id.nextval,ACCID,SUBCODE,AMT,CDDIRC,WSTTIME,'0' from 
          (select acc_id ACCID,
                      sub_code SUBCODE, 
                      abs(sum(balance_debit)-sum(balance_credit)) AMT,
                      decode(sign(sum(balance_debit-balance_credit)),-1,'0','1') CDDIRC,
                      sysdate WSTTIME
                  from account_balance 
                  where type='1' and sub_code like '224103%'
                  group by acc_id,sub_code) 
          where AMT>0;
这里只是批量插入一批,还有插入另外一批数据,与上面查找出来的数据相似,唯一的区别只在于SUB_CODE,只是SUB_CODE换成22410300。
能用一个查询语句就实现这样的功能吗?将同一条查找出来的数据,稍作改动之后,再连同原先的记录,插入到表waste中去。

1 个解决方案

#1


呃,自己搞定了。用insert all into 就可以解决了。。。。

#1


呃,自己搞定了。用insert all into 就可以解决了。。。。