注册 登录
编程论坛 SQL Server论坛

有没有这样的语句?

summoner 发布于 2007-04-19 12:30, 676 次点击
能将某一数值字段的值更新为这样的:该字段第一行不变,该字段第二行以及以后的行变为上一行的数值加上一个固定的数值?
如:(固定数值100)
金额 更新后变成
333 333
333 433
333 533
333 633
333 733
333 833
8 回复
#2
棉花糖ONE2007-04-19 12:38
if object_id('shiyan') is not null
drop table shiyan
go
create table shiyan(id int)
insert into shiyan select 333
insert into shiyan select 333
insert into shiyan select 333
insert into shiyan select 333
insert into shiyan select 333
insert into shiyan select 333
select * from shiyan
declare @id int
update shiyan set @id=isnull(@id,id),id=@id-100,@id=@id+100
select * from shiyan
drop table shiyan
go
#3
summoner2007-04-19 12:43
眼前一片空白(好大的棉花糖!)

这样不会破坏原表的数据吧?
#4
棉花糖ONE2007-04-19 12:51
肯定会啦,我那是update的啊,你是要干吗哦
#5
summoner2007-04-19 12:52
以下是引用summoner在2007-4-19 12:43:10的发言:
眼前一片空白(好大的棉花糖!)

这样不会破坏原表的数据吧?

除开要改的这一字段,其它列的数据不能破环

#6
棉花糖ONE2007-04-19 12:53

oracle有个分析函数可以取到上一行的值,你去查查分析函数的资料,分析函数我不懂

#7
summoner2007-04-19 13:08
#8
mingwangxing2007-05-26 02:04
你可以用游标cursor呀,游历每一行时加100就行了。
#9
lzalibabalr2007-08-02 00:39

DECLARE @tb TABLE(t INT IDENTITY(0,1),[金额] INT)
DECLARE @tb1 TABLE(cid INT )
DECLARE @count INT
SET @count=0
INSERT INTO @tb SELECT 333
UNION ALL SELECT 333
UNION ALL SELECT 333
UNION ALL SELECT 333
UNION ALL SELECT 333
UNION ALL SELECT 333
UNION ALL SELECT 333
UNION ALL SELECT 333


SELECT [金额],c=[金额]+t*100 FROM @tb

有一个想法:增加一个标识列,修改完之后再删除新增那个标识列.

1