现在有两个实体表
表1
销售表
货号 时间 数量
A1 2016/5/10 2
A1 2016/5/9 3
A1 2016/5/8 3
表2
收货表
货号 时间 数量
A1 2016/5/7 1
A1 2016/5/6 4
A1 2016/5/5 1
现在需要查询成如下结果
查询结果表
货号 时间 销售数量 收货数量
A1 2016/5/10 2 1
A1 2016/5/9 3 3
A1 2016/5/8 3 2
查询结果的前3列就是【销售表】,第四列的【收货数据】计算规则如下
1.根据每天的销售时间往前推3天内的收货都算此日期下的收货数量
2.当收货数量大于销售数据时,收货数量等于销售数量
第一行的销售时间是2016-5-10,那么收货日期范围是2016-5-7到2016-5-9的3天,查收货表的此范围内只有2016-5-7日的1件,所以第一行的结果就是1,此时2016-5-7的收货表中就剩余为0了;
第二行的销售时间是2016-5-9,那么收货日期范围是2016-5-6到2016-5-8的3天,查收货表的此范围内有2016-5-7(剩余0件),2016-5-6日合计4件,按照规则第2天,结果为3,2015-5-6日剩余1件;
第三行依次类推合计是2016-5-6剩余的1件加上2016-5-5号的1件合计2件;
请问各位高手,如何用SQL完成上述要求,存储过程或者函数都行,实际使用的时候数据量会比较大,所有也请考虑执行效率问题,谢谢