sql 累计递减

linyongboccdn 2012-09-17 05:21:32
id 存货名称 存货数量 需求数量 订购数量
1 AA 1300 800 0
2 AA 1300 600 100
3 AA 1300 300 300
4 AA 1300 200 200
修改存货数量把数据变为下面的表,不是单纯查询,而是修改
id 存货名称 存货数量 需求数量 订购数量
1 AA 1300 800 0
2 AA 500 600 100
3 AA 0 300 300
4 AA 0 200 200
...全文
258 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2012-09-17
  • 打赏
  • 举报
回复

create table lin
(id int,
存货名称 varchar(5),
存货数量 int,
需求数量 int,
订购数量 int)

insert into lin
select 1, 'AA', 1300, 800, 0 union all
select 2, 'AA', 1300, 600, 100 union all
select 3, 'AA', 1300, 300, 300 union all
select 4, 'AA', 1300, 200, 200


update a
set a.存货数量=
case when (a.存货数量-(select isnull(sum(需求数量),0) from lin b where b.id<a.id))<0
then 0 else a.存货数量-(select isnull(sum(需求数量),0) from lin b where b.id<a.id) end
from lin a

select * from lin

/*
id 存货名称 存货数量 需求数量 订购数量
----------- ----- ----------- ----------- -----------
1 AA 1300 800 0
2 AA 500 600 100
3 AA 0 300 300
4 AA 0 200 200

(4 row(s) affected)
*/

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧