当前位置: 代码迷 >> Oracle开发 >> 请问一个循环输出方面的有关问题
  详细解决方案

请问一个循环输出方面的有关问题

热度:3   发布时间:2016-04-24 07:19:58.0
请教一个循环输出方面的问题
场景如下:我现在有表A的数据,想把表A的数据插入到表B中,然后每插入99行,第100行对前99行的一个字段进行sum操作,其余置空字段字段置空,以此类推循环。最后不足99行的,如剩余40行则第41行对前40行进行和前面一样的操作。

请问这种该何如实现啊?

我比较新手,希望各位大牛能详尽的指导下。。。。

------解决方案--------------------
太晚了,我就懒得起服务了来测试,你自己试试看吧。
SQL code
create table ta(id number, val number);create table tb(id number, val number);--给插入测试数据declare  begin    for i in 1..210 loop      insert into ta values(i,i+10);    end loop;  end;--把表ta数据按照你的要求复制到表tb,先得到总过需要循环多少遍,然后没循环一次,查询出对应的100条数据,然后union统计的那一行数据,再将这101条数据插入到表tb中去。declarepages number;begin  select ceil(count(*)/100) into pages from ta;  for i in 1..pages loop    insert into tb      select * from ta where rownum between (i-1)*100+1 and i*100      union all      select null id, (select sum(val) from ta where rownum between (i-1)*100+1 and i*100) val from dual;  end loop;end;
------解决方案--------------------
这要根据真实业务弄。
一个简单的例子

insert into b (
select col1 ,sum(col1)
from (select col1,ceil(rownum/99) rn ,rownum from a01)
group by rollup(rn ,col1));

即,按需求把数据分组,然后每99行算一个标识符,根据标识符分组求和汇总
  相关解决方案