大力等高手,以变量为条件更新的更新语句
tb 表结构
rID rLastQty
1 3
2 2
3 5
4 6
declare @Num decimal(18,4) --中间变量
set @Num=6
--先进先出算法
declare @j decimal(18,4) --中间变量
set @j=0
update tb set @j=case when @num>rLastQty then rLastQty else @num end ,
rLastQty=rLastQty - @j,@num=@num-@j
问题1:如何实现 当@num=0的时候就不更新了,逻辑上面讲就是tb表3+2+5 > 6以后的记录就不更新了
上面的tb表将rlastQty为3,2,5更新为0,0,4,而后面的记录不执行更新
问题2:如何 取出累计大于@Num=6的前面记录,就是tb表的前三条记录,3+2+5>6
类似 select * from tb where sum(rLastQty)>6