首先对需求进行一下说明:
假如我们A表里面有一条记录是这样的:
三个字段,第一个为MDN(号码),第二个为STARTTIME(开始时间),第三个为ENDTIME(结束时间)
现需要对表中所有这种开始时间与结束时间不在同一天的记录进行拆分,时间跨度几天就拆分成几条:
以上为实现后的效果图,由于之前对Oracle的游标不太了解,请教了组长,后来也仔细看了下
游标的使用,这个实现也并不难。主要是首先计算两个时间的跨度为几天,然后通过循环,将对应
的记录插入到另一张表中去。其中tableA是原始表,tableB是新表,v_d表示时间跨度的变量,其他变量
对应表字段。
declare
-- Local variables here
v_startTime date;
v_endTime date;
v_mdn int;
v2_startTime date;
v2_endTime date;
v_d int;
cursor cr is
select mdn,startTime,endTime from tableA
where trunc(endTime,'dd') - trunc(startTime,'dd') > 0;
begin
-- Test statements here
open cr;
LOOP
fetch cr into v_mdn,v_startTime,v_endTime;
exit when cr%notfound;
v_d :=trunc(v_endTime,'dd') - trunc(v_startTime,'dd') -1;
dbms_output.put_line(v_d);
insert into tableB values(v_mdn,trunc(v_endTime,'dd'),v_endTime);
loop
exit when v_d=0;
v2_startTime := trunc(v_startTime,'dd') + v_d;
dbms_output.put_line(to_char(v2_startTime,'yyyy-MM-dd'));
v2_endTime := v2_startTime + 1;
insert into tableB values(v_mdn,v2_startTime,v2_endTime);
v_d:=v_d-1;
end loop;
insert into tableB values(v_mdn,v_startTime,trunc(v_startTime,'dd')+1);
end loop;
close cr;
end;
/
分享到:
相关推荐
本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...
18、一个用户表中有一个积分字段,假如数据库中有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决? 107 19、一个用户具有多个角色,请查询出该表中具有该用户的所有角色的其他...
18、一个用户表中有一个积分字段,假如数据库中有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决? 19、一个用户具有多个角色,请查询出该表中具有该用户的所有角色的其他用户。...
18、一个用户表中有一个积分字段,假如数据库中有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决? 107 19、一个用户具有多个角色,请查询出该表中具有该用户的所有角色的其他...
18、一个用户表中有一个积分字段,假如数据库中有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决? 107 19、一个用户具有多个角色,请查询出该表中具有该用户的所有角色的其他...
18、一个用户表中有一个积分字段,假如数据库中有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决? 107 19、一个用户具有多个角色,请查询出该表中具有该用户的所有角色的其他...
18、一个用户表中有一个积分字段,假如数据库中有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决? 107 19、一个用户具有多个角色,请查询出该表中具有该用户的所有角色的其他...
18、一个用户表中有一个积分字段,假如数据库中有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决? 107 19、一个用户具有多个角色,请查询出该表中具有该用户的所有角色的其他...
18、一个用户表中有一个积分字段,假如数据库中有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决? 117 19、一个用户具有多个角色,请查询出该表中具有该用户的所有角色的其他...
18、一个用户表中有一个积分字段,假如数据库中有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决? 107 19、一个用户具有多个角色,请查询出该表中具有该用户的所有角色的其他...
72 <br>0102 将字符串首字母转换大写 72 <br>0103 如何进行字节数组和字符串的相互转换 72 <br>0104 如何把一个按空格分割的字符串存储在一个ArrayList数组中 73 <br>4.2 获取字符串信息 73 ...