时间 名称 出入数量 剩余数量
2010-1-1 13:00:00 a 1 1
2010-1-1 14:00:00 a 2 3
2010-1-1 15:00:00 a 3 6
2010-1-2 13:00:00 a -1 5
时间、名称、出入数量可由数据库查出,该如何生成“剩余数量”该列
2010-1-1 13:00:00 a 1 1
2010-1-1 14:00:00 a 2 3
2010-1-1 15:00:00 a 3 6
2010-1-2 13:00:00 a -1 5
时间、名称、出入数量可由数据库查出,该如何生成“剩余数量”该列
解决方案 »
- 一个数据库的问题,大虾们帮帮忙
- 索引的问题
- 通过从ntwdblib.dll中导出函数指针对数据库进行操作,是属于哪种数据库连接方式????
- [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionCheckForData (CheckforData())
- 关于一个速度快慢的问题
- 求救一条更新数据库的语句100分(急)
- 在SQL Server 2005中是不是不能连接SQL Server 7.0
- 怎利用客戶端管理程序在Ms SQLServer7.0中加注冊新用戶,並將它加相應的Role!
- 如何在程序中调出ADO的property page?
- 关于SQL2000的问题
- 一条简单的查询题,想好久了~!
- 如何一个字段 分解成多段
insert into tb values('2010-1-1 13:00:00' , 'a' , 1)
insert into tb values('2010-1-1 14:00:00' , 'a' , 2)
insert into tb values('2010-1-1 15:00:00' , 'a' , 3)
insert into tb values('2010-1-2 13:00:00' , 'a' , -1)
goselect * , 剩余数量 = (select sum(出入数量) from tb where 时间 <= t.时间) from tb tdrop table tb/*
时间 名称 出入数量 剩余数量
------------------------------------------------------ ---------- ----------- -----------
2010-01-01 13:00:00.000 a 1 1
2010-01-01 14:00:00.000 a 2 3
2010-01-01 15:00:00.000 a 3 6
2010-01-02 13:00:00.000 a -1 5(所影响的行数为 4 行)
*/
2010-1-1 13:00:00 a 1 1
2010-1-1 14:00:00 a 2 3
2010-1-1 15:00:00 a 3 6
2010-1-2 13:00:00 a -1 5
2010-1-2 13:00:00 b 1 1
2010-1-2 13:00:00 c 1 1
2010-1-1 00:00:00 a 1 1
2010-1-1 00:00:00 a 2 3
2010-1-1 00:00:00 a 3 6
2010-1-2 00:00:00 a -1 5
2010-1-2 00:00:00 b 1 1
2010-1-2 00:00:00 c 1 1
insert into tb values(1,'2010-1-1 13:00:00' , 'a' , 1)
insert into tb values(2,'2010-1-1 14:00:00' , 'a' , 2)
insert into tb values(3,'2010-1-1 15:00:00' , 'a' , 3)
insert into tb values(4,'2010-1-2 13:00:00' , 'a' , -1)
insert into tb values(5,'2010-1-2 00:00:00' , 'b' , 1)
insert into tb values(6,'2010-1-2 00:00:00' , 'c' , 1)
goselect * , 剩余数量 = (select sum(出入数量) from tb where 名称 = t.名称 and id <= t.id) from tb t drop table tb/*
id 时间 名称 出入数量 剩余数量
----------- ------------------------------------------------------ ---------- ----------- -----------
1 2010-01-01 13:00:00.000 a 1 1
2 2010-01-01 14:00:00.000 a 2 3
3 2010-01-01 15:00:00.000 a 3 6
4 2010-01-02 13:00:00.000 a -1 5
5 2010-01-02 00:00:00.000 b 1 1
6 2010-01-02 00:00:00.000 c 1 1(所影响的行数为 6 行)
*/如上,如果时间不起作用的话,必须有个顺序号,否则得用游标去做.
以下是游标的基本写法.自己去做.游标的基本写法declare @id int,@name varchar(20);
declare cur cursor fast_forward for
select id,name from a;
open cur;
fetch next from cur into @id,@name;
while @@fetch_status=0
begin
--做你要做的事
fetch next from cur into @id,@name;
end
close cur;
deallocate cur;