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

怎样在SQLServer2005的存储过程中怎么遍历记录集

2013-04-20 
怎样在SQLServer2005的存储过程中如何遍历记录集?现有一个数据库,字段分别是F1到F3,并按一定规律排好序,F1

怎样在SQLServer2005的存储过程中如何遍历记录集?
现有一个数据库,字段分别是F1到F3,并按一定规律排好序,F1是唯一值,可以认为是ID,现在要编写一个存储过程,并定时执行,功能是找到这张表中字段F2或F3的值比相邻两条记录对应字段的平均值小一半的记录,并把对应字段的值改成相邻字段的平均值,应该如何实现?请大家帮忙。

如果我没描述清楚,请跟帖说明,很着急,谢谢。

[解决办法]
select * from tb a
cross apply (select top 1 * from tb where F1>a.F1) b
cross apply (select top 1 * from tb where F1<a.F1) c

b,c即相邻数据加条件过滤
where a.F2<(b.F2+c.F2)/2

写一个定时作业,执行你的存储过程。
[解决办法]

;WITH MU AS (
SELECT F1,F2,F3,ROW_NUMBER() OVER(ORDER BY F1 ASC) AS NUM 
FROM TB
)
UPDATE T2 SET 
T2.F2=CASE WHEN T2.F2=(T1.F2+T3.F2)/4 THEN (T1.F2+T3.F2)/2 ELSE T2.F2 END
,T2.F3=CASE WHEN T2.F3=(T1.F3+T3.F3)/4 THEN (T1.F3+T3.F3)/2 ELSE T2.F3 END
FROM MU T1
INNER JOIN MU T2 ON T1.NUM=T2.NUM-1
INNER JOIN MU T3 ON T2.NUM=T3.NUM-1
WHERE (T2.F2=(T1.F2+T3.F2)/4 OR T2.F3=(T1.F3+T3.F3)/4)

热点排行
Bad Request.