有一个表T1
现有phone_id,cust_id,cust_name,serv_id,region_code,region_name一共六个字段
我现在想按照region_code 的一定数量把数据加入到T2表中
比如 region = 1 的要 1000
     region = 2 的要 5000等
T1表region = 1的数量是肯定远远大于需求数量的
但是region 等于其他数的时候不一定满足(例如 region =2 要5000个 表T1中只有4000 )那么不足的1000要添加到region =1 里
现在就是region = 1 的要2000
region = 2 的要4000
select count(1) into v_a from T1 where region_code = 2 group by region_code 
v_b := 5000 - v_a;
if v_b < 0
 insert into T2 select * from T1 where region_code = 2 and rownum <= 5000
else
 v_c := v_c + abs(v_b);
 insert into T2 select * from T1 where region_code = 2 and rownum <= v_a
 insert into T2 select * from T1 where region_code = 1 and rownum <= v_c 由于region_code会有很多 所以不想按照上面的方法写
求助各位大神有没有新的简单的写法sql优化

解决方案 »

  1.   

    大概有多少个region?那个5000,1000.在其他region上也是不变的吗
      

  2.   

    region会有很多因为这个是地级市的对应碼 中国有多少他就有多少
    5000,1000这种值是会根据需求改变的
      

  3.   

    另外建一个表,一列存region,一列存region对应的记录行数,再加上T1,T2表对应的region记录行数也可以
    然后以这个表为条件来写sql