SQL 2005中实现循环每一行做的操作
2008-09-23 10:38
344 查看
SQL Server 2005中ROW_NUMBER()用法,简单介绍下,还是很有用的。
如果我们想对一个表的每一行做出比较复杂的操作,大多会想到用游标,
换一种思路,用IDENTITY或SQL Server 2005中的新函数ROW_NUMBER()和while循环来对每一行执行操作,这样就可以不用游标。
详细的示例代码如下:
---(一)游标方式
Declare @iSN varchar(16)
Declare iCursor Cursor For
select Distinct Serial_Number from PQC_Statistic
where TransDateTime like '2008092310%'
Open iCursor
FETCH Next from iCursor Into @iSN--用来对每一行来进行循环操作
WHILE @@FETCH_STATUS = 0
Begin
--此处对每一行要进行的操作的代码
Fetch Next from iCursor into @iSN
END
CLOSE iCursor
DEALLOCATE iCursor
-------------------------------------------------------------------------------------
---(二)Identity方式
select * from PQC_Statistic
where TransDateTime like '2008092310%'
select Serial_Number,IDENTITY(INT,1,1) AS RowNumber
into #TempSN
from PQC_Statistic
where transdatetime like '2008092310%'
ORDER BY Serial_Number
Declare @maxRow int --用来获得最大的rowNumber
Declare @rowNo int
Select @maxRow=max(rownumber) from #TempSN
set @rowNo=1
While @rowNo<=@maxRow --用来对每一个rowNumber来进行循环操作
Begin
--此处对每一行要进行的操作的代码
Set @rowNo=@rowNo+1
End
Drop Table #TempSN--清除临时表
-------------------------------------------------------------------------------------
---(三)RowNumber方式
select * from PQC_Statistic
where TransDateTime like '2008092310%'
select Serial_Number,ROW_NUMBER() OVER(ORDER BY Serial_Number) AS RowNumber
into #TempSN
from PQC_Statistic
where transdatetime like '2008092310%'
Declare @maxRow int --用来获得最大的rowNumber
Declare @rowNo int
Select @maxRow=max(rownumber) from #TempSN
set @rowNo=1
While @rowNo<=@maxRow --用来对每一个rowNumber来进行循环操作
Begin
--此处对每一行要进行的操作的代码
Set @rowNo=@rowNo+1
End
Drop Table #TempSN--清除临时表
如果我们想对一个表的每一行做出比较复杂的操作,大多会想到用游标,
换一种思路,用IDENTITY或SQL Server 2005中的新函数ROW_NUMBER()和while循环来对每一行执行操作,这样就可以不用游标。
详细的示例代码如下:
---(一)游标方式
Declare @iSN varchar(16)
Declare iCursor Cursor For
select Distinct Serial_Number from PQC_Statistic
where TransDateTime like '2008092310%'
Open iCursor
FETCH Next from iCursor Into @iSN--用来对每一行来进行循环操作
WHILE @@FETCH_STATUS = 0
Begin
--此处对每一行要进行的操作的代码
Fetch Next from iCursor into @iSN
END
CLOSE iCursor
DEALLOCATE iCursor
-------------------------------------------------------------------------------------
---(二)Identity方式
select * from PQC_Statistic
where TransDateTime like '2008092310%'
select Serial_Number,IDENTITY(INT,1,1) AS RowNumber
into #TempSN
from PQC_Statistic
where transdatetime like '2008092310%'
ORDER BY Serial_Number
Declare @maxRow int --用来获得最大的rowNumber
Declare @rowNo int
Select @maxRow=max(rownumber) from #TempSN
set @rowNo=1
While @rowNo<=@maxRow --用来对每一个rowNumber来进行循环操作
Begin
--此处对每一行要进行的操作的代码
Set @rowNo=@rowNo+1
End
Drop Table #TempSN--清除临时表
-------------------------------------------------------------------------------------
---(三)RowNumber方式
select * from PQC_Statistic
where TransDateTime like '2008092310%'
select Serial_Number,ROW_NUMBER() OVER(ORDER BY Serial_Number) AS RowNumber
into #TempSN
from PQC_Statistic
where transdatetime like '2008092310%'
Declare @maxRow int --用来获得最大的rowNumber
Declare @rowNo int
Select @maxRow=max(rownumber) from #TempSN
set @rowNo=1
While @rowNo<=@maxRow --用来对每一个rowNumber来进行循环操作
Begin
--此处对每一行要进行的操作的代码
Set @rowNo=@rowNo+1
End
Drop Table #TempSN--清除临时表
相关文章推荐
- SQL 2005中实现循环每一行做的操作
- 在SQL 2005中实现循环每一行做一定的操作
- SQL实现循环每一行做一定操作。
- SQL2005实现循环每一行做一定操作。
- SQL2005实现循环每一行做一定操作。
- SQL2005实现循环每一行做一定操作
- sql创建作业实现循环执行操作
- 实现多行合并一行的SQL-[MSSQL2005]写法
- SQL WHILE 循环中的游标 用例,SQL中实现循环操作
- 使用SQL中的ROW_NUMBER()和while循环对每一行执行操作
- SQL2005 实现while循环
- 基于两端操作的循环队列的实现
- 双向循环链表操作的实现
- sql2005远程访问设置-win7下成功,xp如果不能访问也可这样操作
- Excel&nbsp;2013中实现一行变一列的操作
- C++ 标准模板库实现list循环删除操作
- 利用C#2005实现数据表的基本操作
- 利用Java+sqlserver 实现对数据库的操作
- HiveSQL解析原理:包括SQL转化为MapReduce过程及MapReduce如何实现基本SQL操作
- 数据机构(10)--顺序循环队列的实现及相关操作