日期:2014-05-17  浏览次数:20860 次

oracle 数据处理
我从数据库里面查找某段时间下面某个ID的所有的数据,得到的数据如下:
345 343 2013/8/1 8:00:00
340 346 2013/8/1 8:35:00
340 347 2013/8/1 8:45:00
338 349 2013/8/1 8:55:00
336 349 2013/8/1 9:00:00
336 349 2013/8/1 9:05:00
335 349 2013/8/1 9:10:00
334 349 2013/8/1 9:15:00
333 349 2013/8/1 9:20:00
这里面的数据不是每隔5分钟就有的,而是有的时间有,有的时间没有,我显示的时候需要将每隔5分钟的数据都显示出来,也就是说8:00:00的数据没有,而8:05:00的没有,那么我需要将8:00:00的数据补给8:05:00,依次类推,我目前的做法是查到数据后,在程序里面去做补的操作。现在想在数据库查询的时候就处理这些好这些数据,然后直接显示。
帮帮忙解决下吧。。。。O(∩_∩)O谢谢啦。。。。。

------解决方案--------------------
没空写具体的语句,给你个思路:
把每个ID所有的时间虚构出来,也就是将ID表和时间表(select 开始时间+5/24*rownum from dual connect by rownum<=(结束时间-开始时间)*24/5)做个笛卡尔连接。
然后查询出这个虚构的表的每条记录的时间对应你上面表中,ID相同而时间最近的那条的数据,就ok了
------解决方案--------------------
#16已经写出来第一个字段了阿,仿造写出第二个就可以了。

关于起始日期值为空,可以先单独查出一个符合的日期,然后使用用union all合并得到结果。