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 就可以解决了。。。。