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

求高效率的 SqL2000 字传值逐行累计方法

2013-06-25 
求高效的 SqL2000 字传值逐行累计方法本帖最后由 LzLlzl001 于 2013-05-14 13:58:05 编辑有如下1张表(表名

求高效的 SqL2000 字传值逐行累计方法
本帖最后由 LzLlzl001 于 2013-05-14 13:58:05 编辑 有如下1张表(表名:T1,id字段为索引)

 Id   A    wg
 1    1
 2    3 
 3    6
 .    .
 .    .
求更新成
 id    A   wG
 1    1    1
 2    3    4
 3    6   10

   我试过这条语句(update t1 set hg=(select sum(a) from t1 t2 where t2.Id<=t1.id )
)能达到想要的效果,而且也简单明了。但速度太慢,2000条记录要约半分钟,求有没其它方法达到效果和速度的统一。
SqL2000?字传值逐行累计方法 SQL
[解决办法]
试试这种要多久

DECLARE @i INT =0
UPDATE tb SET [wg]=@i,@i=@i+[A]
[解决办法]
说实话,我也只能想到这样的,而且它是SQL2000
[解决办法]
如果只更新一次,那么先插入一个临时表,然后清空源表,再把临时表的数据插回去就可以了

----------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2013-05-14 14:03:53
-- Version:
--      Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) 
--Jun 17 2011 00:54:03 
--Copyright (c) Microsoft Corporation
--Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1, v.721)
--
----------------------------
--> 测试数据:[T1]
if object_id('[T1]') is not null drop table [T1]
go 
create table [T1]([Id] int,[A] int)
insert [T1]
select 1,1 union all
select 2,3 union all
select 3,6
--------------开始查询--------------------------

select *,wg=(SELECT SUM(A) FROM [T1] WHERE a.id>=id) 
from [T1] a
----------------结果----------------------------
/* 
Id          A           wg
----------- ----------- -----------
1           1           1
2           3           4
3           6           10
*/

热点排行