mysql库存先进先出_sql 先进先出 库存
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 先进先出 库存相关推荐
- mysql管理应用_如何在PHP和MySQL中制作出色的库存管理应用程序
mysql管理应用 by Richard 理查德(Richard) 如何在PHP和MySQL中制作出色的库存管理应用程序 (How to Make an Awesome Inventory Manag ...
- mysql修改库存量_mysql update 库存问题
6 2016-02-01 23:03:08 +08:00 1 如果纯在 mysql 的场景下操作,不用内存 key-value 系统,我更倾向于用另外一种模型处理这种竞争抢购的逻辑. " ...
- 电商库存设计mysql redis_电商技术 -- 库存设计指北
前言 最近在解决一套老电商系统的库存"超卖"问题.一直以为超卖问题,最难解决的是库存扣减,实则不然,我们的系统在解决了库存扣减问题之后,还会一直有"超卖"现象? ...
- python计算库存_python电商库存 python编程
现在做电商个人没有产品,不存货,有人下单再去找,你认为行吗? 可行,但不要奢求能出多少单. 企业管理软件ERP哪家的支持电商订单和库存的管理? 一般的企业管理软件ERP都有你说的功能,但是,根据行业性 ...
- 库存账龄VS库存库龄
库存账龄VS库存库龄 前言:最近参与公司<集团存货管理>项目,其中库存涉及到账龄和库龄两个概念,业务部门时不时会混淆概念,特地撸一篇名词解析 库存账龄:指货物进入当前账套(库存组织)的时长 ...
- java 订单减库存_下单减库存
1. 减库存 一般下单减库存的流程大概是这样的: 1.查询商品库存.这里直接查的Redis中的库存. 2.Redis中的库存减1.这里用到的Redis命令是:incrby -1 3.扣减数据库中的库存 ...
- java 订单减库存_下单减库存(示例代码)
1. 减库存 一般下单减库存的流程大概是这样的: 1.查询商品库存.这里直接查的Redis中的库存. 2.Redis中的库存减1.这里用到的Redis命令是:incrby -1 3.扣减数据库中的库存 ...
- SAP MIGO + 311将库存从IM管理库存地转入WM管理库存地,物料凭证号里不显示WM 选项卡
SAP MIGO + 311将库存从IM管理库存地转入WM管理库存地,物料凭证号里不显示WM 选项卡 SAP系统是一个高度集成的ERP系统.在库存管理上,存在IM和WM两种管理方式,WM管理更精细化, ...
- 库存处理(第一次做库存,希望让需要者帮助得到帮助,让有经验者提出指导)...
0.通过结存期操作建立一个库存期间.(往结存期表插入一个结存期记录) 1.通过出入库操作完成完成库存基本数据的录入(出入库属同一张表通过billtype来区分). 2.出入库的涉及两张表,从表的插入和 ...
最新文章
- python怎么安装第三方库-怎样安装Python的第三方库
- Stanford机器学习笔记-6. 学习模型的评估和选择
- 最简单的基于FFmpeg的移动端例子:IOS 推流器
- 使用lock同步线程,建立了10个线程实例
- 前后台传值乱码问题解决
- 【CI】CN.一种多尺度协同变异的微粒群优化算法
- asp.net core系列 48 Identity 身份模型自定义
- Java数据库表自动转化为PO对象
- visual studio2013 php
- WinForm设置窗体默认控件焦点
- 我的世界boat运行库JAVA10_我的世界boat运行库
- C盘100G不够,如何用D盘(或者E、F)空间给C盘扩容?
- 解决每次打开office都提示windows正在配置visio的问题以及office2013闪退问题
- 包的变量作用域测试说明
- 详解 P沟道mos管与N沟道mos管
- 计算机无法设置双屏显示,电脑怎么设置双屏或多屏显示?
- 大数据平台数据治理体系建设和管理方案
- 80后使用吵架约定,非常实用
- Mac使用XQuartz调图形化总结
- [转贴]“山寨”之现状分析
热门文章
- matlab产生一列相同的数据,读取excel中的数据把第一列相同的所有行数据输出成一个excel...
- php smtp 超时,SMTP错误:无法连接到服务器:连接超时(110)与PHPMailer和Outlook SMTP
- linux push path,Linux系统shell使用几点摘录(二)
- kudu大量数据更新_Apache Kudu又更新?1.4版改进了Web界面
- python语言模型工具_Python工具整合,为程序员和新手准备的 8 大 Python 工具
- jstack-查看Java进程的线程堆栈信息,锁定高消耗资源代码
- 鸿蒙系统哪里的,华为“鸿蒙系统”IPFS/FIL:区块链的“鸿蒙系统”?
- python支持链式赋值和多重赋值_Python: 链式赋值的坑
- python语言是什么时候诞生的_python诞生于什么时候
- 如何分析java程序_如何利用 JConsole观察分析Java程序的运行,进行排错调优