关于同一条记录在两个日期之间填补数据的sql

来源:互联网 发布:时时彩计划网站源码 编辑:程序博客网 时间:2024/06/05 03:46

在项目中解决问题的sql

SELECT DISTINCT a.farm_code,

  a.createTime,
  a.start_time,
  a.end_time,
  b.dis,
  a.start_time+b.dis-1 createTime--产生的日期序列(根据endtime-startime之差产生时间序列)
FROM trt_farm_rpt_daily_prod_dt a--一个表
RIGHT JOIN
  (SELECT rownum dis--rownum是根据之差来从1到差值开始运算
  FROM
    (SELECT MAX(end_time-start_time)+1 gap FROM trt_farm_rpt_daily_prod_dt--根据gap是之差最大的
    )
    CONNECT BY rownum<=gap--根据节点往下循环
  ) b
ON 1             =1
WHERE a.end_time>=a.start_time+b.dis-1--where条件成立的次数为循环的次数,执行结束,开始执行下一轮的日期序列
AND a.start_time BETWEEN to_date('2015-03-11','yyyy-mm-dd') AND to_date('2015-03-20','yyyy-mm-dd')

ORDER BY a.createTime ;


0 0
原创粉丝点击