数据表数量消减问题
数据表Table1
Table1:
名称 数量
XX 10
XX 200
前台显示XX这个商品的数量总和,但需要消减数量时,可能出现下面这种情况:
Table1:
名称 数量
XX 10
XX 15
这时如果要消减数量25,请问该如何解决?
[解决办法]
建议你提供详细的资料:例如表的结构,表之间的关系,测试数据,相关算法及需要的结果。这样有助于我们理解你的意思,更主要的是能尽快让你获得答案或解决问题的方法。
[解决办法]
在你的表Table1里应该加一个标识列什么的,先进先出的问题貌似。
[解决办法]
use Tempdbgo--> --> if not object_id(N'Tempdb..#T1') is null drop table #T1GoCreate table #T1([名称] nvarchar(2),[数量] int)Insert #T1select N'XX',10 union allselect N'XX',200Go;WITH aAS(SELECT *,ROW_NUMBER()OVER(ORDER BY GETDATE()) AS row FROM #T1),a2AS(SELECT *,sum1=(SELECT SUM([数量]) FROM a WHERE [名称]=[名称] AND row<=b.row) FROM a AS b)UPDATE a2 SET [数量]=CASE WHEN sum1<=25 THEN 0 ELSE sum1-25 END WHERE sum1-[数量]<25SELECT * FROM #T1/*名称 数量XX 0XX 185*/
[解决办法]
if object_id('tb','U') is not null drop table tbgocreate table tb( id int, 名称 varchar(10), 数量 int)goinsert into tbselect 1,'洗衣粉',10 union allselect 2,'洗衣粉',12 union allselect 3,'冰棍',5 union allselect 4,'洗衣粉',8goupdate tb set 数量=case when (select sum(数量) from tb where id<=a.id and 名称='洗衣粉')<25 then 0 else (select sum(数量) from tb where id<=a.id and 名称='洗衣粉')-25 end from tb a where 名称='洗衣粉'select * from tb/*id 名称 数量----------- ---------- -----------1 洗衣粉 02 洗衣粉 03 冰棍 54 洗衣粉 5(4 行受影响)*/
[解决办法]