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

SQL语句求连续天数
需求是这样的,有缺货表记录仓库缺货情况,表中记录的是缺货日期,存货编码,存货名称等等。要求:SQL语句查询出连续缺货3天以上的存货。
这里只展现两个字段,如下:
qdate(缺货日期)    vcode(存货编码)
2013-06-01          A001
2013-06-02          A001
2013-06-02          B001
2013-06-05          A001
.................
如上图,A001虽然有三次记录,但是不是连续的,则不能取。同时,如果某存货一个月内存在多次连续3天以上缺货的,也要求能都反映出来。

求大侠指导,如果没空写代码,提思路也可,感谢!
SQL 连续天数

------解决方案--------------------
select vcode
  from (select t.*,
               trunc(t.qdate - row_number()
                     over(partition by t.vcode order by t.qdate)) rn
          from t)
 group by vcode, rn
having count(1) >= 3;

------解决方案--------------------
楼上方法不错
------解决方案--------------------
可以根据每组上下2行的差值来分组 进行统计找出超过连续3个为1的数据