我在执行
insert into table
select
from
这种格式时,若执行查询会有对应记录,但是加上上面的insert部分,就没有记录了,显示插入记录数为0。
为什么呢?没想通
查询出来的记录数不多,只有10几条,但是sql有嵌套,有点复杂 看了对应的字段完全没有冲突,插入前已经把表里的数据都清空了~
使用create table as的方式可以建表,但是还是没有数据。急求各位大侠解决,救命啊~~~
insert into table
select
from
这种格式时,若执行查询会有对应记录,但是加上上面的insert部分,就没有记录了,显示插入记录数为0。
为什么呢?没想通
查询出来的记录数不多,只有10几条,但是sql有嵌套,有点复杂 看了对应的字段完全没有冲突,插入前已经把表里的数据都清空了~
使用create table as的方式可以建表,但是还是没有数据。急求各位大侠解决,救命啊~~~
还有代码最好全部贴出来
然后我把sql提出来执行就出现上述现象~~不过有点长喔,影响大家的视觉,我深感歉意。。
insert into fr_kpi_data_2009
(LOCAL_CODE,
AREA_ID,
MONTH_NO,
REPORT_ID,
REPORT_NAME,
FIGURE1,
FIGURE2,
FIGURE3,
FIGURE4,
RATE1,
RATE2)
( select t.local_code ,
t.area_id ,
200908 MONTH_NO,
3 REPORT_ID,
'fgghdf' report_name,
sum(case month_no
when 200908 then
net_serv_num
else 0 end) figure1,
sum(net_serv_num) figure2,
null figure3,
null figure4,
null RATE1,
null RATE2
from (select a.local_code,
a.area_id,
a.month_no,
(a.serv_num - b.serv_num) net_serv_num
from (select local_code,
area_id,
month_no,
sum(serv_num) serv_num
from dm_serv_suit_comp_num
where suit_type_id in
(select suit_type_id
from d_suit_type_new
where level3_code in (01, 02, 17)) and
local_code = '0837'
and month_no between 200907 and 200908
group by local_code, area_id, month_no) a,
(select local_code,
area_id,
to_char(add_months(to_date('200908', 'yyyymm'), 1),
'yyyymm') month_no,
sum(serv_num) serv_num
from dm_serv_suit_comp_num
where suit_type_id in
(select suit_type_id
from d_suit_type_new
where level3_code in (01, 02, 17))
and local_code = '0837'
and month_no between
to_char(add_months(to_date('200907', 'yyyymm'), -1),
'yyyymm') and
to_char(add_months(to_date('200908', 'yyyymm'), -1),
'yyyymm')
group by local_code, area_id, month_no) b
where a.area_id = b.area_id
and a.month_no = b.month_no) t
group by local_code, area_id)
过程中sql执行之后有写commit哈,从表内提取的多个sql执行出来有的有数据,有的sql没有,上面的这种就是没有的。
所以不是commit的问题
修改语句试试能不能解决
能解决哈,把自然连接改成left join就解决了,我又试了inner join和right join,以及full outer join都不能解决这个问题。
不过ORACLE 10g里面就修正了这个bug的