sql中循环处理当前行数据和上一行数据相加减

所属分类: 数据库 / MsSql 阅读数: 300
收藏 0 赞 0 分享

  以下事例,使用游标循环表#temptable中数据,然后让当前行和上一行中的argument1 相加 存放到当前行的 argument2 中,比较简单。

--drop table #temptable
create table #temptable
(
  argument1 int,
  argument2 int,
  argument3 datetime
)

declare @rowcount int,@argument1 int,@argument2 nvarchar(50),@argument3 datetime
set @rowcount=1
set @argument1=1
set @argument2=0
set @argument3=GETDATE()

while(@rowcount<100)
begin
  insert into #temptable(argument1,argument2,argument3)
        values(@argument1,@argument2,@argument3)
  
  set @argument1=@argument1 + datepart(day,@argument3)
  set @argument3=@argument3-1  
  set @rowcount = @rowcount + 1
end

--select * from #temptable

declare @lastargument2 int
set @lastargument2=0
set @argument2=0
declare _cursor cursor for(select argument1 from #temptable)
open _cursor;
fetch next from _cursor into @argument2 
while @@fetch_status = 0
begin      
  update #temptable
  set argument2=@argument2+@lastargument2
  where current of _cursor
  
  set @lastargument2=@argument2  
  fetch next from _cursor into @argument2 
end
close _cursor
deallocate _cursor

--select * from #temptable

问一个问题:

第一句fetch next from _cursor into @argument2 这句为什么不能放在while循环的第一行,删除第二行呢?我记得自己当时在这里出错了,呵呵。

更多精彩内容其他人还在看

一个函数解决SQLServer中bigint 转 int带符号时报错问题

这篇文章主要介绍了解决SQLServer中bigint 转 int带符号时报错问题的函数,需要的朋友可以参考下
收藏 0 赞 0 分享

SQLServer恢复表级数据详解

这篇文章主要介绍了SQLServer中用于快速恢复表,而不是库,但是切记,防范总比亡羊补牢好,需要的朋友可以参考下
收藏 0 赞 0 分享

SQLSERVER 清除历史记录的方法

使用SQL Server登录使用数据库时,登录过的记录会出现在登录框中,下面是删除方法,需要的朋友可以参考下
收藏 0 赞 0 分享

浅析SQL server 临时表

这篇文章主要介绍了SQL server 临时表的创建查询以及使用过程中应注意的事项,需要的朋友可以参考下
收藏 0 赞 0 分享

MSSQL段落还原脚本,SQLSERVER段落脚本

“段落还原”(在 SQL Server 2005 中引入)允许分阶段还原和恢复包含多个文件组的数据库。段落还原包括从主文件组开始(有时也从一个或多个辅助文件组开始)的一系列还原序列。
收藏 0 赞 0 分享

SQL SERVER中关于exists 和 in的简单分析

这篇文章主要介绍了SQL SERVER中关于exists 和 in的简单分析,需要的朋友可以参考下
收藏 0 赞 0 分享

Transactional replication(事务复制)详解之如何跳过一个事务

事务复制由 SQL Server 快照代理、日志读取器代理和分发代理实现。 快照代理准备快照文件(其中包含了已发布表和数据库对象的架构和数据),然后将这些文件存储在快照文件夹中,并在分发服务器中的分发数据库中记录同步作业。
收藏 0 赞 0 分享

SQL语句中含有乘号报错的处理办法

这篇文章主要介绍了SQL语句中含有乘号报错的处理办法,需要的朋友可以参考下
收藏 0 赞 0 分享

SQL SERVER先判断视图是否存在然后再创建视图的语句

SQL SERVER中先判断视图是否存在,使用IF NOT EXISTS,然后再创建视图,使用create view,整个过程如下
收藏 0 赞 0 分享

sql中循环处理当前行数据和上一行数据相加减

曾经,sql中循环处理当前行数据和上一行数据浪费了我不少时间,学会后才发现如此容易,其实学问就是如此,难者不会,会者不难。
收藏 0 赞 0 分享
查看更多