基本上可以这样
select fz.产品代码,fz.产品名称,fz.规格型号,
qcjc.期初数量+sum(case when rk.入库日期<datename(yy,getdate())+'.'+datename(mm,getdate())+'.01' then isnull(rk.入库数量,0) else 0 end )
-sum(case when ck.出库日期<datename(yy,getdate())+'.'+datename(mm,getdate())+'.01' then isnull(ck.出库数量,0) else 0 end ) as 上月库存,
sum(case when datename(yy,rk.入库日期)+'.'+datename(yy,rk.入库日期)=datename(yy,getdate())+'.'+datename(mm,getdate()) then isnull(rk.入库数量,0) else 0 end ) as 本月入库,
sum(case when datename(yy,ck.出库日期)+'.'+datename(yy,ck.出库日期)=datename(yy,getdate())+'.'+datename(mm,getdate()) then isnull(ck.出库数量,0) else 0 end ) as 本月出库,
qcjc.期初数量+sum(case when datename(yy,rk.入库日期)+'.'+datename(yy,rk.入库日期)<=datename(yy,getdate())+'.'+datename(mm,getdate()) then isnull(rk.入库数量,0) else 0 end )
-sum(case when datename(yy,ck.出库日期)+'.'+datename(yy,ck.出库日期)<=datename(yy,getdate())+'.'+datename(mm,getdate()) then isnull(ck.出库数量,0) else 0 end ) as 本月库存
from fz
left join rk on fz.产品代码=rk.产品代码
left join rk on fz.产品代码=ck.产品代码
left join qcjc on fz.产品代码=qcjc.产品代码
group by fz.产品代码,fz.产品名称,fz.规格型号,qcjc.期初数量
领用和购买由于表中没有相关信息,所以统计不了