用sql怎么实现库存的先进先出?

用sql怎么实现库存的先进先出?,第1张

create table 表1(货号 varchar(20),批次 int ,数量 int)

create table 表2(货号 varchar(20) ,数量 int)

/*------------------------------*/

insert into 表1

select '001', 1, 100 union all

select '001', 2, 200 union all

select '001', 3, 300

/*------------------------------*/

insert into 表2

select '001', 400

/*------------------------------*/

select * from 表1

select * from 表2

/*------------------------------*/

select t1.货号,t1.批次,

case when ((select isnull(sum(数量),0) from 表1 t3 where t3.货号=t1.货号 and t3.批次<t1.批次)-isnull(t2.new_数量,0))<0

then case when ((select sum(数量) from 表1 t4 where t4.货号=t1.货号 and t4.批次<=t1.批次)-isnull(t2.new_数量,0))<0 then 0

else ((select sum(数量) from 表1 t4 where t4.货号=t1.货号 and t4.批次<=t1.批次)-isnull(t2.new_数量,0))

end

else t1.数量

end as 批次剩余库存数

from 表1 t1

left join (select 货号,sum(数量) as new_数量 from 表2 group by 货号) t2

on t1.货号=t2.货号

/*------------------------------*/

PS:上面将null转换为0的函数为isnull,是SQL SERVER下的函数,你只要根据你的数据转换为对应函数就可以了,如oracle是nvl,mysql是ifnull等等.

有问题hi我

例如存货情形如下;

1、1月1日进货10个每个5元,小计50元。

2、4月1日进货10个每个6元,小计60元。

3、8月1日进货10个每个7元,小计70元。

4、12月1日进货10个每个8元,小计80元。

假设在12月31日存货数量为15个,则期末存货价值为12月1日10个每个8元小计80元,8月1日5个每个7元小计35元,总计存货价值为115元。

1、先进先出法是以先购入的存货先发出,据此确定发出存货和期末存货的成本。

2、先进先出法以实地盘存制为基础计算的结果与永续盘存制相同。

3、在先进先出法下,存货成本是按最近购货确定的,期末存货成本比较接近现行的市场价格。

4、当物价上涨时,先进先出法会高估企业当期利润和库存存货价值反之,当物价下跌时,会低估企业存货价值和当期利润。

5、先进先出法的优点是使企业不能随意挑选存货计价以调整当期利润缺点是工作量比较大。

扩展资料

1、先进先出法的优点:

最大优点:同一个批次下,入库和出库的成本价保持不变,因此不会发生因漏录单据、补录单据、成本重算等 *** 作造成的成本变化,减小对账难度。

先进先出法可以随时结转品项发出成本,因此在出库单、调拨单、盘点单上可以随时看到出库单价。手工 *** 作较为繁琐,但依靠系统则可大大降低手工 *** 作量。

2、先进先出法的缺点:

最大缺点:先进先出方式严格依赖批次号,因此无法在库存结零情况下继续出库(因为无法在库内找到批次号)。

当有较多库存时,如果进货价格持续上涨,则期末时品项成本接近于市场价格,但是由于出库的货品仍然是涨价前的批次,因此导致发出成本偏低,这样可能会高估企业当期的利润和库存品项价值,引起决策偏差。同上,反之,会低估企业品项价值和当期利润。

参考资料来源:百度百科-先进先出


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9940227.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-03
下一篇2023-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存