create table 库存表(物料编码 varchar(10),货位 varchar(10),数量 int)
go
insert 库存表 select 'WL01', 'A', 8
insert 库存表 select 'WL01', 'B' ,10
insert 库存表 select 'WL01', 'C', 15
go
select 物料编码,货位,出货数量=(case when (select sum(数量) from 库存表 where 数量<=a.数量)<=20 then 数量 else 20-(select sum(数量) from 库存表 where 数量<a.数量) end) From 库存表 a
order by 物料编码
go
drop table 库存表
go
/*
物料编码 货位 出货数量
---------- ---------- -----------
WL01 A 8
WL01 B 10
WL01 C 2
*/
go
insert 库存表 select 'WL01', 'A', 8
insert 库存表 select 'WL01', 'B' ,10
insert 库存表 select 'WL01', 'C', 15
go
select 物料编码,货位,出货数量=(case when (select sum(数量) from 库存表 where 数量<=a.数量)<=20 then 数量 else 20-(select sum(数量) from 库存表 where 数量<a.数量) end) From 库存表 a
order by 物料编码
go
drop table 库存表
go
/*
物料编码 货位 出货数量
---------- ---------- -----------
WL01 A 8
WL01 B 10
WL01 C 2
*/
解决方案 »
- 关于sql2005数据库加密
- 如何尽量避免死锁!请高手指点!!!本人感觉不尽!!!!!!
- 如何去掉字符串中的回车换行符?
- 各位请进:下面的比较复杂的SQL语句怎么写好??
- 这个SQL语句怎么写?
- 这条SQL语句错在那里?(在线)
- 在SQL SERVER中,如果用TEXT和用NUMERIC到底回有多大区别?有没有人做测试的啊?
- ORACLE 与 DB2的 Stored procedure 有什么不同?
- ?我每次启动SBASE SQL ANYWHERE数据库后,有两个表的多条记录被锁定
- 求一sql语句
- when null then 'N' else 'Y'
- SQL语句update问题 关于MSSQL
go
insert 库存表 select 'WL01', 'A', 8
insert 库存表 select 'WL01', 'B' ,10
insert 库存表 select 'WL01', 'C', 15
go
select 物料编码,货位,出货数量=(case when (select sum(数量) from 库存表 where 物料编码=a.物料编码 and 数量<=a.数量)<=20 then 数量 else 20-(select sum(数量) from 库存表 where 物料编码=a.物料编码 and 数量<a.数量) end) From 库存表 a
-- 加上物料代码判断
where 物料编码='WL01'
order by 物料编码
go
drop table 库存表
go
/*
物料编码 货位 出货数量
---------- ---------- -----------
WL01 A 8
WL01 B 10
WL01 C 2
*/
WL01 A 8
WL01 B 2
WL01 C -8
出现负数
正确结果应该为:WL01 A 8
WL01 B 2