求 一条更新 语句

wenyang2004 2007-04-23 01:46:50

日期 手机 电话 总额  余额
2007-4-11 1000 1200 2200 0
2007-4-12 1000 1200 2200 0
2007-4-13 1000 1200 2200 0

更新这个表
2007-4-11余额=10000-(手机+电话)
2007-4-12余额=(2007-4-11余额)-(手机+电话)
2007-4-13余额=(2007-4-12余额)-(手机+电话)

日期 手机 电话 总额  余额
2007-4-11 1000 1200 2200 7800
2007-4-12 1000 1200 2200 5600
2007-4-13 1000 1200 2200 3400
...全文
210 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenyang2004 2007-04-23
  • 打赏
  • 举报
回复
因为我有一些日期是重复的

比如说
2007-04-11 1000 1200 2200
2007-04-11 1000 1200 2200
2007-04-12 1000 1200 2200
2007-04-13 1000 1200 2200
中国风 2007-04-23
  • 打赏
  • 举报
回复
wenyang2004(Smoke) ( ) 信誉:100 Blog 加为好友 2007-04-23 14:39:46 得分: 0


roy_88 更新超时


?
这样试试,如果还是不行,那只有通过临时表实现(select sum(手机+电话) from @ta where 日期!>a.日期)--这一段是影响速度的

update a
set 余额=10000-(select sum(手机+电话) from @ta where 日期!>a.日期)
from @ta a
wenyang2004 2007-04-23
  • 打赏
  • 举报
回复
还有没有别的方法?
wenyang2004 2007-04-23
  • 打赏
  • 举报
回复
roy_88 更新超时
graduate2006 2007-04-23
  • 打赏
  • 举报
回复
UPDATE 表 SET 余额 = (10000-(手机+电话))
WHERE DATEDIFF(Day, 日期, '2007-4-11') = 0
中国风 2007-04-23
  • 打赏
  • 举报
回复
declare @ta table(日期 varchar(10),手机 int,电话 int,总额 int,余额 int)
insert @ta select '2007-04-11', 1000, 1200, 2200, 0
insert @ta select '2007-04-12', 1000, 1200, 2200, 0
insert @ta select '2007-04-13', 1000, 1200, 2200, 0
--更新
update a
set 余额=b.余额-(select sum(手机+电话) from @ta where 日期!>a.日期)
from @ta a
cross join
(select 10000 as 余额
)b

select * from @ta


(1 行受影响)

(1 行受影响)

(1 行受影响)

(3 行受影响)
日期 手机 电话 总额 余额
---------- ----------- ----------- ----------- -----------
2007-04-11 1000 1200 2200 7800
2007-04-12 1000 1200 2200 5600
2007-04-13 1000 1200 2200 3400

(3 行受影响)

中国风 2007-04-23
  • 打赏
  • 举报
回复
declare @ta table(日期 varchar(10),手机 int,电话 int,总额 int,余额 int)
insert @ta select '2007-04-11', 1000, 1200, 2200, 0
insert @ta select '2007-04-12', 1000, 1200, 2200, 0
insert @ta select '2007-04-13', 1000, 1200, 2200, 0

select *,
[余额]=b.余额-(select sum(手机+电话) from @ta where 日期!>a.日期)
from @ta a
cross join
(select 10000 as 余额
)b

(1 行受影响)

(1 行受影响)

(1 行受影响)
日期 手机 电话 总额 余额 余额 余额
---------- ----------- ----------- ----------- ----------- ----------- -----------
2007-04-11 1000 1200 2200 0 10000 7800
2007-04-12 1000 1200 2200 0 10000 5600
2007-04-13 1000 1200 2200 0 10000 3400

(3 行受影响)

wenyang2004 2007-04-23
  • 打赏
  • 举报
回复
更新 表

2007-4-11余额=10000-总额
2007-4-12余额=(2007-4-11余额)-总额
2007-4-13余额=(2007-4-12余额)-总额

34,590

社区成员

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

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