各位大大,现在我有2张表是当前库存表Stock(当中有一个字段是每月初期库存数),入出库表Issue(数量正数为进,负数为出),我想要得到当月每一天的库存数量表,怎么实现呢?
就好比今天是8月4日,我有一个产品,本月初期库存数是1000个,然后8月1日出了200个,8月2日无出入库,8月3日进了100个,那我就想得到三条数据:
日期 库存
8月1日 800
8月2日 800
8月3日 900
用sql语句怎么实现呢?
------解决方案--------------------
构造一个日期即可
with vir_date as(
select x1.产品,x2.日期
from(select distinct 产品 from stock where 月份='xxx') x1,(select to_char(trunc(sysdate,'MM')+rownum-1,'YYYY-MM') 日期 from dual connect by rownum<=sysdate-trunc(sysdate,'MM')+1)x2)
select vir_date.产品,vir_date.日期,a.期初库存+sum(nvl(b.入库数,0))over(partition by vir_date.产品,a.月份 order by vir_date.日期) as 库存
from vir_date,stock a,issue b
where a.产品=b.产品(+)
and a.月份=substr(b.日期(+),1,7)
and a.月份='xxx'
and a.产品=vir_date.产品
and b.日期(+)=vir_date.产品
order by vir_date.产品,vir_date.日期
------解决方案--------------------
呵呵,大版都写完了啊,不过有点问题
每天可能会有多次出库入库的操作,这样的话就重复了
把大版语句中的issue b 替换成楼主语句中的V2,应该就可以了