持续求救...时间区间重合、包含,更新算法!! 谢谢
业务是这样的 unit_code->feeder_id->low_transformer_id->USER_code 这是一个层次关系
2:时间段会出现包含关系 ,如图(问题数据)同一个用户,当他的break_type_id一样时出现区间包含关系是由于他的
reason字段不同
3:同一个用户还可能break_type_id不同,但是也存在时间区间包含关系
4:也有可能以上两种情况都存在
总之:数据如图(问题数据)
我通过存储过程,使用游标,然后建立临时表将这种数据均处理掉了让后将数据插入了一个新的表中,但是客户只想在原表上处理
也就是处理成如下的样子
every_sj 为每条的时间间隔由 end_time-start_time
hushu 为除去区间包含后的实际时间间隔。
如图:最终处理后的数据
这种情况我感觉无法更新,希望高手能给出解答或者思路 谢谢!
这个表一个月下来要1400000多数据,而且是增量抽取的(一天一抽),这些我都暂时不考虑,头疼ing。
建表语句:
create table TEST
(
BREAK_TYPE_ID NUMBER(2),
UNIT_CODE VARCHAR2(12),
LOW_TRANSFORMER_ID VARCHAR2(32),
USER_CODE VARCHAR2(32) not null,
START_TIME DATE not null,
END_TIME DATE,
TD_MONTH VARCHAR2(6),
FEEDER_ID VARCHAR2(32),
EVERY_SJ NUMBER(14,4),
HUSHU NUMBER(12),
REASON VARCHAR2(100)
)
insert into TEST (BREAK_TYPE_ID, UNIT_CODE, LOW_TRANSFORMER_ID, USER_CODE, START_TIME, END_TIME, TD_MONTH, FEEDER_ID, EVERY_SJ, HUSHU, REASON)
values (11, 'BBB', '1', '2323232', to_date('17-03-2009 08:00:00', 'dd-mm-yyyy hh24:mi:ss'), to_date('17-03-2009 16:00:00', 'dd-mm-yyyy hh24:mi:ss'), '200903', '1', null, null, '1');
insert into TEST (BREAK_TYPE_ID, UNIT_CODE, LOW_TRANSFORMER_ID, USER_CODE, START_TIME, END_TIME, TD_MONTH, FEEDER_ID, EVERY_SJ, HUSHU, REASON)
values (11, 'BBB', '1', '2323232', to_date('17-03-2009 10:00:00', 'dd-mm-yyyy hh24:mi:ss'), to_date('17-03-2009 20:00:00', 'dd-mm-yyyy hh24:mi:ss'), '200903', '1', null, null, '2');
insert into TEST (BREAK_TYPE_ID, UNIT_CODE, LOW_TRANSFORMER_ID, USER_CODE, START_TIME, END_TIME, TD_MONTH, FEEDER_ID, EVERY_SJ, HUSHU, REASON)
values (22, 'BBB', '1', '2323232', to_date('17-03-2009 11:00:00', 'dd-mm-yyyy hh24:mi:ss'), to_date('17-03-2009 17:00:00', 'dd-mm-yyyy hh24:mi:ss'), '200903', '1', null, null, '1');
insert into TEST (BREAK_TYPE_ID, UNIT_CODE, LOW_TRANSFORMER_ID, USER_CODE, START_TIME, END_TIME, TD_MONTH, FEEDER_ID, EVERY_SJ, HUSHU, REASON)
values (11, '
BBB', '2', '2323', to_date('17-03-2009 11:00:00', 'dd-mm-yyyy hh24:mi:ss'), to_date('17-03-2009 17:00:00', 'dd-mm-yyyy hh24:mi:ss'), '200903', '1', null, null, '1');
insert into TEST (BREAK_TYPE_ID, UNIT_CODE, LOW_TRANSFORMER_ID, USER_CODE, START_TIME, END_TIME, TD_MONTH, FEEDER_ID, EVERY_SJ, HUSHU, REASON)
values (33, 'BBB', '1', '2323232', to_date('17-03-2009 13:00:00', 'dd-mm-yyyy hh24:mi:ss'), to_date('17-03-2009 14:00:00', 'dd-mm-yyyy hh24:mi:ss'), '200903', '1', null, null, '1');
insert into TEST (BREAK_TYPE_ID, UNIT_CODE, LOW_TRANSFORMER_ID, USER_CODE, START_TIME, END_TIME, TD_MONTH, FEEDER_ID, EVERY_SJ, HUSHU, REASON)
values (22, 'BBB', '1', '2323232', to_date('18-03-2009 13:00:00', 'dd-mm-yyyy hh24:mi:ss'), to_date('18-03-2009 14:00:00', 'dd-mm-yyyy hh24:mi:ss'), '200903', '1', null, null, '1');
可能是太着急了,一直没有发现,我贴的数据确实存在问题,end_time-start_time 有几条记录多算了一个小时哦 ...
[本帖最后由 nvlixue 于 2009-3-23 13:14 编辑]
问题数据.JPG
(248.7 KB, 下载次数: 5)
2009-3-18 10:57 上传
最终处理后数据.JPG
(38.88 KB, 下载次数: 4)
2009-3-18 10:57 上传