SQL处理库存与销售,先进先出原则
来源:互联网 发布:程序员做硬件 编辑:程序博客网 时间:2024/04/27 19:14
--库存表
create table t(id int 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 proc wsp
@name varchar(50),
@cost int--,--销售量
--@returns int output --该货物的库存是否够(不够:-1;够:1)
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
then a.j
else
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 then 0
else (select @cost-isnull(sum(j),0)+isnull(sum(c),0)+a.c from t where name=@name and jdate<a.jdate and j!=c)
end
end
from t a where name=@name and j!=c
end
else
raiserror('库存不足',16,1)
return
go
--测试:
exec wsp @name='A',@cost=390
select * from t
--删除测试环境
drop table t
drop proc wsp
- SQL处理库存与销售,先进先出原则
- 销售-库存先进先出查询方法
- ---------------------------------库存先进先出--------------------------------
- 库存先进先出
- 采用先进先出原则对货物的库存进行处理
- 库存先进先出例子
- SQL先进先出
- 库存先进先出简单例子
- 库存先进先出简单例子:
- 按需求先进先出分配库存
- sql 查询先进先出
- SQL Server 用触发器实现库存的先进先出(有退货)
- 更新库存数据,先进先出存储过程
- 先进先出的还款处理触发器
- 先进先出的订单分配处理
- 先进先出的数据冲销处理
- 先进先出的数据冲销处理
- 先进先出的数据冲销处理
- 学好ASP编程必会的代码
- 数据库加密解密
- 安装SQL Server 数据库时注意事项及优化SQL Server 数据库服务器配置
- Windows Socket五种I/O模型——代码全攻略
- 实用工具:devcon(附启用禁用网卡范例)
- SQL处理库存与销售,先进先出原则
- VC2008调试时弹出没有找到mfc90ud.dll
- learning 09-08-17
- 向数据库中上传图片
- CentOS下安装Thunderbird
- 哇塞,打开一个页面访问了这么多次数据库??
- C++和C#编写并且相互调用COM组件
- learning 09-08-18
- PowerPC的MMU机制(一)