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

  以下事例,使用游标循环表#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循环的第一行,删除第二行呢?我记得自己当时在这里出错了,呵呵。

时间: 2024-10-26 10:57:42

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

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

以下事例,使用游标循环表#temptable中数据,然后让当前行和上一行中的argument1 相加 存放到当前行的 argument2 中,比较简单. --drop table #temptable create table #temptable ( argument1 int, argument2 int, argument3 datetime ) declare @rowcount int,@argument1 int,@argument2 nvarchar(50),@argument3

vbscript-用 Isnumeric判断从SQL中取出的(类型为numeric)数据返回值是False是为什么?

问题描述 用 Isnumeric判断从SQL中取出的(类型为numeric)数据返回值是False是为什么? 之前在sybase环境时使用的是自动采番功能,现在移到SQLServer环境就想用取得最大值然后加一的方法实现插入. 因为本来就有写好的取得最大值的函数所以就拿来直接用了,在+1之前要用Isnumeric()判断是否为数字. 判断时的语句是 IF Isnumeric(objrs("CUR_NO").value) THEN CreateMaxNo = objrs("CU

《Excel高手捷径:一招鲜,吃遍天》一第8招 怎样把一行数据变为一列数据或将一列数据变为一行数据

第8招 怎样把一行数据变为一列数据或将一列数据变为一行数据 Excel高手捷径:一招鲜,吃遍天通过选择性粘贴工具的转置功能可以把行变为列,列变为行.选中数据,复制,再选"选择性粘贴"工具,把"转置"打勾,如图1-22所示.

SQL Server中如何定位Row Lock锁定哪一行数据

在SQL Server中有时候会使用提示(Hint)强制SQL使用行锁(Row Lock),前两天有个同事咨询了一个问题,如何定位Row Lock具体锁定了哪一行.其实这个问题只适合研究一下,实际意义并不大,因为找到.定位被锁定的行的代价开销较大,而意义却不怎么大,而且使用场景也很少.那么下面我们来探讨.研究一下这个问题吧:     在会话窗口(会话ID=65)下执行下面SQL语句,模拟SQL Server使用行锁锁定某一行记录:    USE AdventureWorks2012; GO  

怎么实现用datalist将sql表中的一行数据,纵向循环展示出来

问题描述 现在sql表中有多行数据对应相应id,现在通过id确定需要展示的行,现在一行假如有20行数据,其中只有前五个有数据,现在需要实现的功能是纵向展示这一行的数据并不显示为空的数据,用datalist怎么写,呃,不为空的是不是可以在sql中筛选后再导入数据集把 解决方案 解决方案二:防尘补丁吗,吗,吗,解决方案三:防沉补丁.....解决方案四:这一行哪一行?你不是说前5行都有数据吗如果你描述不清就给出数据的原格式和目标格式解决方案五:引用3楼Z65443344的回复: 这一行哪一行?你不是说

SQL中的循环、for循环、游标

原文:SQL中的循环.for循环.游标 我们使用SQL语句处理数据时,可能会碰到一些需要循环遍历某个表并对其进行相应的操作(添加.修改.删除),这时我们就需要用到咱们在编程中常常用的for或foreach,但是在SQL中写循环往往显得那么吃力,翻遍网上的资料,找不到几个正确的并能执行的循环处理数据的方法,在这里,我来给大家分享一下! 要SQL中写类似for循环,我这里使用的是SQL中的游标来实现,当然SQL中也有for loop.while do等,我这里仅以使用游标方式来进行示例,其它的方式大

探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页

探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页.以下代码说明了我们实例中数据库的一表的部分数据结构: CREATE TABLE [dbo].[TGongwen] (    --TGongwen是红头文件表名    [Gid] [int] IDENTITY (1, 1) NOT NULL ,--本表的id号,也是主键    [title] [varchar] (80) COLLATE Chinese_PRC_CI_AS NULL ,  --红头文件的

Sql Server中循环和条件语句的使用示例

-- ╔════════╗ -- =============================== ║ if语句使用示例 ║ -- ╚════════╝ declare @a int set @a=12 if @a>100 begin print @a end else begin print 'no' end -- ╔══════════╗ -- =============================== ║ while语句使用示例 ║ -- ╚══════════╝ declare @i

基于SQL中的数据查询语句汇总

以下是对SQL中的数据查询语句进行了汇总介绍,需要的朋友可以过来参考下   where条件表达式 --统计函数 复制代码 代码如下: Select count(1) from student; --like模糊查询 --统计班上姓张的人数 复制代码 代码如下: select count(*) from student where realName like '张%'; --统计班上张姓两个字的人数 复制代码 代码如下: select count(*) from student where rea