create tablet(

idint identity(1,1), name varchar(50),--商品名称

j int, --入库数量

c int, --出库数量

jdate datetime --入库时间

)insert into t(name,j,c,jdate) select 'A',100,0,'2007-12-01'

insert into t(name,j,c,jdate) select 'A',200,0,'2008-01-07'

insert into t(name,j,c,jdate) select 'B',320,0,'2007-12-21'

insert into t(name,j,c,jdate) select 'A',100,0,'2008-01-15'

insert into t(name,j,c,jdate) select 'B',90,0,'2008-02-03'

insert into t(name,j,c,jdate) select 'A',460,0,'2008-02-01'

insert into t(name,j,c,jdate) select 'A',510,0,'2008-03-01'

go

create procwsp@name varchar(50),--商品名称

@cost int --销售量

as

--先得出该货物的库存是否够

declare @spare float --剩余库存

select @spare=sum(j)-sum(c) from t where name=@name

if(@spare>=@cost)begin

--根据入库日期采用先进先出原则对货物的库存进行处理

update t set c=

case when (select @cost-isnull(sum(j),0)+isnull(sum(c),0) from t where name=@name and jdate<=a.jdate and j!=c)>=0

thena.jelse

case when (select @cost-isnull(sum(j),0)+isnull(sum(c),0) from t where name=@name and jdate

then 0

else (select @cost-isnull(sum(j),0)+isnull(sum(c),0)+a.c from t where name=@name and jdate

end

from t a where name=@name and j!=cend

else

raiserror('库存不足',16,1)return

go

--测试:

exec wsp @name='A',@cost=110

select * fromt--drop table t--drop proc wsp

/*(4 行受影响)

id name j c jdate

----------- -------------------------------------------------- ----------- ----------- -----------------------

1 A 100 100 2007-12-01 00:00:00.000

2 A 200 200 2008-01-07 00:00:00.000

3 B 320 0 2007-12-21 00:00:00.000

4 A 100 30 2008-01-15 00:00:00.000

5 B 90 0 2008-02-03 00:00:00.000

6 A 460 0 2008-02-01 00:00:00.000

7 A 510 0 2008-03-01 00:00:00.000

(7 行受影响)*/

CREATE TABLE#tmp

( IDint IDENTITY (1, 1),

单价decimal(18, 2) NOT NULL,

进库数量decimal(18, 0) NOT NULL,

已出数量decimal(18, 0) NOT NULL)insert into #tmp(单价,进库数量,已出数量) values(1.1,50,0)insert into #tmp(单价,进库数量,已出数量) values(1.3,30,0)insert into #tmp(单价,进库数量,已出数量) values(1.4,60,0)insert into #tmp(单价,进库数量,已出数量) values(1.5,20,0)select * from#tmpdeclare @t decimal(18, 0) --一次出库数量

,@temp decimal(18, 0) --某一单价的临时出库数量

select @t=20

update #tmp set @temp=

case when @t>进库数量-已出数量then 进库数量-已出数量 --当出库数量大于某一单价的结存数量时,那么此单价的出库数量就是结存数量,也就是说此单价的库存数量全部消耗完。

else @t --出库数量小于或等于某一单价的结存数量时,那么此次的出库数量就是实际的出库数量

end,@t=@t-@temp,--减去一次针对某个单价的临时出库数量

已出数量=@temp+已出数量 --新出库的数量+以前出库的数量

where 已出数量<>进库数量 --某个单价出库完了就不参于出库计算,即结存数为零的就排除在外

select * from#tmpset @t=40

update #tmp set @temp=

case when @t>进库数量-已出数量then 进库数量-已出数量else @t

end,@t=@t-@temp,

已出数量=@temp+已出数量where 已出数量<>进库数量select * from#tmpgo

drop table #tmp

mysql库存先进先出_sql 先进先出 库存相关推荐

  1. mysql管理应用_如何在PHP和MySQL中制作出色的库存管理应用程序

    mysql管理应用 by Richard 理查德(Richard) 如何在PHP和MySQL中制作出色的库存管理应用程序 (How to Make an Awesome Inventory Manag ...

  2. mysql修改库存量_mysql update 库存问题

    6 2016-02-01 23:03:08 +08:00   1 如果纯在 mysql 的场景下操作,不用内存 key-value 系统,我更倾向于用另外一种模型处理这种竞争抢购的逻辑. " ...

  3. 电商库存设计mysql redis_电商技术 -- 库存设计指北

    前言 最近在解决一套老电商系统的库存"超卖"问题.一直以为超卖问题,最难解决的是库存扣减,实则不然,我们的系统在解决了库存扣减问题之后,还会一直有"超卖"现象? ...

  4. python计算库存_python电商库存 python编程

    现在做电商个人没有产品,不存货,有人下单再去找,你认为行吗? 可行,但不要奢求能出多少单. 企业管理软件ERP哪家的支持电商订单和库存的管理? 一般的企业管理软件ERP都有你说的功能,但是,根据行业性 ...

  5. 库存账龄VS库存库龄

    库存账龄VS库存库龄 前言:最近参与公司<集团存货管理>项目,其中库存涉及到账龄和库龄两个概念,业务部门时不时会混淆概念,特地撸一篇名词解析 库存账龄:指货物进入当前账套(库存组织)的时长 ...

  6. java 订单减库存_下单减库存

    1. 减库存 一般下单减库存的流程大概是这样的: 1.查询商品库存.这里直接查的Redis中的库存. 2.Redis中的库存减1.这里用到的Redis命令是:incrby -1 3.扣减数据库中的库存 ...

  7. java 订单减库存_下单减库存(示例代码)

    1. 减库存 一般下单减库存的流程大概是这样的: 1.查询商品库存.这里直接查的Redis中的库存. 2.Redis中的库存减1.这里用到的Redis命令是:incrby -1 3.扣减数据库中的库存 ...

  8. SAP MIGO + 311将库存从IM管理库存地转入WM管理库存地,物料凭证号里不显示WM 选项卡

    SAP MIGO + 311将库存从IM管理库存地转入WM管理库存地,物料凭证号里不显示WM 选项卡 SAP系统是一个高度集成的ERP系统.在库存管理上,存在IM和WM两种管理方式,WM管理更精细化, ...

  9. 库存处理(第一次做库存,希望让需要者帮助得到帮助,让有经验者提出指导)...

    0.通过结存期操作建立一个库存期间.(往结存期表插入一个结存期记录) 1.通过出入库操作完成完成库存基本数据的录入(出入库属同一张表通过billtype来区分). 2.出入库的涉及两张表,从表的插入和 ...

最新文章

  1. python怎么安装第三方库-怎样安装Python的第三方库
  2. Stanford机器学习笔记-6. 学习模型的评估和选择
  3. 最简单的基于FFmpeg的移动端例子:IOS 推流器
  4. 使用lock同步线程,建立了10个线程实例
  5. 前后台传值乱码问题解决
  6. 【CI】CN.一种多尺度协同变异的微粒群优化算法
  7. asp.net core系列 48 Identity 身份模型自定义
  8. Java数据库表自动转化为PO对象
  9. visual studio2013 php
  10. WinForm设置窗体默认控件焦点
  11. 我的世界boat运行库JAVA10_我的世界boat运行库
  12. C盘100G不够,如何用D盘(或者E、F)空间给C盘扩容?
  13. 解决每次打开office都提示windows正在配置visio的问题以及office2013闪退问题
  14. 包的变量作用域测试说明
  15. 详解 P沟道mos管与N沟道mos管
  16. 计算机无法设置双屏显示,电脑怎么设置双屏或多屏显示?
  17. 大数据平台数据治理体系建设和管理方案
  18. 80后使用吵架约定,非常实用
  19. Mac使用XQuartz调图形化总结
  20. [转贴]“山寨”之现状分析

热门文章

  1. matlab产生一列相同的数据,读取excel中的数据把第一列相同的所有行数据输出成一个excel...
  2. php smtp 超时,SMTP错误:无法连接到服务器:连接超时(110)与PHPMailer和Outlook SMTP
  3. linux push path,Linux系统shell使用几点摘录(二)
  4. kudu大量数据更新_Apache Kudu又更新?1.4版改进了Web界面
  5. python语言模型工具_Python工具整合,为程序员和新手准备的 8 大 Python 工具
  6. jstack-查看Java进程的线程堆栈信息,锁定高消耗资源代码
  7. 鸿蒙系统哪里的,华为“鸿蒙系统”IPFS/FIL:区块链的“鸿蒙系统”?
  8. python支持链式赋值和多重赋值_Python: 链式赋值的坑
  9. python语言是什么时候诞生的_python诞生于什么时候
  10. 如何分析java程序_如何利用 JConsole观察分析Java程序的运行,进行排错调优