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

解决方案 »

  1.   

    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.   

    暂时没懂,我用里面一段
    select t.*,row_number() over(partition by t.vcode order by t.qdate)) rn
    from t
    执行了是这样的:然后您写的用日期去减序号,外层group by又没有聚合函数,我就不懂了,运行也提示无效数字,失败。
    注:按照逻辑,只有标红的三行才算,因为这才是“连续三天”。