这个更新怎么写?

bobwen 2003-10-08 06:13:17
我想更新一个表,想先根据条件把表排序列出来,再根据顺序每一行的数据加上上一行的数据。如下表
行 名称 金额
1 A 100
2 B 200
3 C 300
更新为
1 A 100
2 B 300
3 C 600
如何写Update语句?
...全文
43 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
bobwen 2003-10-09
  • 打赏
  • 举报
回复
不好意思应该是
姓名 日期 余额
张三 03/10/01 -100
张三 03/10/03 200
张三 03/10/02 300
李四 03/10/03 -10
李四 03/10/01 20
李四 03/10/02 30
更新为:
张三 03/10/01 -100
张三 03/10/02 200 (-100+300)
张三 03/10/03 400 (200+200)
李四 03/10/01 20
李四 03/10/02 50 (20+30)
李四 03/10/03 40 (50-10)
bobwen 2003-10-09
  • 打赏
  • 举报
回复
谢谢各位的回复,我是没说清楚,最后一行应该是600。还要麻烦各位,我是要做一个类似银行余额查询的流水帐,如果我的表是这样的:
姓名 日期 余额
张三 03/10/01 -100
张三 03/10/03 200
张三 03/10/02 300
李四 03/10/03 -10
李四 03/10/01 20
李四 03/10/02 30
更新为:
张三 03/10/01 100
张三 03/10/02 200 (-100+300)
张三 03/10/03 400 (200+200)
李四 03/10/01 20
李四 03/10/02 50 (20+30)
李四 03/10/03 40 (50-10)

gmlxf 2003-10-09
  • 打赏
  • 举报
回复
declare @t table(行 int,名称 varchar(10),金额 int)
insert @t
select 1,'A','100' union
select 2,'B','200' union
select 3,'C','300'

select * from @t

declare @i int
set @i=0
update @t set 金额=@i,@i=@i+金额
select * from @t
playyuer 2003-10-09
  • 打赏
  • 举报
回复
update a
set 余额 = (select sum(余额) from T where 日期 <= a.日期)
from T a
zhaoloudy 2003-10-08
  • 打赏
  • 举报
回复
zarge 2003-10-08
  • 打赏
  • 举报
回复
同意干部的答案
pengdali 2003-10-08
  • 打赏
  • 举报
回复
declare @ int
set @=0
update 表 set 金额=@,@i=@+isnull(金额,0)

或:

update 表 set 金额=(select sum(金额) from 表 tem where tem.行<=表.行)
playyuer 2003-10-08
  • 打赏
  • 举报
回复
从你的文字描述:(最后一行应该是 500)
update a
set 金额 = 金额 + (select 金额 from T where 行 - a.行 = 1 )
from T a

or
从你的结果集: (最后一行应该是 600)

update a
set 金额 = (select sum(金额) from T where 行 <= a.行)
from T a
伍子V5 2003-10-08
  • 打赏
  • 举报
回复
declare @i int
set @i = 0
update 表 set @i=@i+金额,金额= @i
txlicenhe 2003-10-08
  • 打赏
  • 举报
回复
declare @i int
set @i = 0
update 表 set 金额= @i,@i=@i+金额

34,875

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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