首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

数据表数量消减有关问题

2012-02-25 
数据表数量消减问题数据表Table1Table1:名称数量XX10XX200前台显示XX这个商品的数量总和,但需要消减数量时

数据表数量消减问题
数据表Table1 
Table1:
名称 数量 
XX 10
XX 200  

前台显示XX这个商品的数量总和,但需要消减数量时,可能出现下面这种情况:

Table1: 
名称 数量
XX 10
XX 15
这时如果要消减数量25,请问该如何解决?

[解决办法]

SQL code
建议你提供详细的资料:例如表的结构,表之间的关系,测试数据,相关算法及需要的结果。这样有助于我们理解你的意思,更主要的是能尽快让你获得答案或解决问题的方法。
[解决办法]
在你的表Table1里应该加一个标识列什么的,先进先出的问题貌似。
[解决办法]
SQL code
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*/
[解决办法]
SQL code
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 行受影响)*/
[解决办法]
探讨

SQL code

if object_id('tb','U') is not null
drop table tb
go
create table tb
(
id int,
[count] int
)
go
insert into tb
select 1,2 union all
select 2,3 union all
select 3,5
go
update tb set [co……

热点排行