需求是这样的,有缺货表记录仓库缺货情况,表中记录的是缺货日期,存货编码,存货名称等等。要求:SQL语句查询出连续缺货3天以上的存货。
这里只展现两个字段,如下:
qdate(缺货日期) vcode(存货编码)
2013-06-01 A001
2013-06-02 A001
2013-06-02 B001
2013-06-05 A001
.................
如上图,A001虽然有三次记录,但是不是连续的,则不能取。同时,如果某存货一个月内存在多次连续3天以上缺货的,也要求能都反映出来。求大侠指导,如果没空写代码,提思路也可,感谢!SQL连续天数
这里只展现两个字段,如下:
qdate(缺货日期) vcode(存货编码)
2013-06-01 A001
2013-06-02 A001
2013-06-02 B001
2013-06-05 A001
.................
如上图,A001虽然有三次记录,但是不是连续的,则不能取。同时,如果某存货一个月内存在多次连续3天以上缺货的,也要求能都反映出来。求大侠指导,如果没空写代码,提思路也可,感谢!SQL连续天数
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;
select t.*,row_number() over(partition by t.vcode order by t.qdate)) rn
from t
执行了是这样的:然后您写的用日期去减序号,外层group by又没有聚合函数,我就不懂了,运行也提示无效数字,失败。
注:按照逻辑,只有标红的三行才算,因为这才是“连续三天”。