insert into TBL_ram_SGWRESDETAIL
(id,SGWRES_ID,ZONE_ID,GROUP_ID)  
select nvl(max(id),0)+1,(select nvl(max(id),0)+-1 from TBL_RAM_SGWRES),'198','2384' from TBL_ram_SGWRESDETAIL group by 1
union all 
select nvl(max(id),0)+2,(select nvl(max(id),0)+0 from TBL_RAM_SGWRES ) ,'198','2384' from TBL_ram_SGWRESDETAIL group by 1
如果TBL_ram_SGWRESDETAIL 有数据的话,那么查询是有数据的,但是如果TBL_ram_SGWRESDETAIL 1条数据都没的话那么就查询不出来,自然什么也不插,怎么解决

解决方案 »

  1.   

    应该是主表的那个加-1出的问题,单独写是没错的。
    select * from t_test;SELECT NVL(MAX(a),0)+1,
      '198',
      '2384'
    FROM t_test;A                      B          
    ---------------------- ---------- NVL(MAX(A),0)+1        '198' '2384' 
    ---------------------- ----- ------ 
    1                      198   2384   
      

  2.   

    因为group by的关系,若基表没有数据,则group by将差不多任何数据。