一个SQL问题:怎么遍历所有记录对数值做处理
发布网友
发布时间:2022-04-10 01:34
我来回答
共3个回答
热心网友
时间:2022-04-10 03:03
--大于等于90的分数不变,其余分数加2
update Result
set Score=Score+(case when Score>=90 then 0 else 2 end);
--如果还有小于60的分数,则再执行一次上面的语句
if exists(select 1 from Result where Score<60)
update Result
set Score=Score+(case when Score>=90 then 0 else 2 end);
追问if exists这样只能判断一次,应该用while吧?while的话怎么写呢?
可能我没说清楚,要一直执行A,除非没有分数小于60了
追答
哦,那把if换成while就行了啊
--大于等于90的分数不变,其余分数加2
update Result
set Score=Score+(case when Score>=90 then 0 else 2 end);
--如果还有小于60的分数,则重复执行上面的语句
while exists(select 1 from Result where Score<60)
update Result
set Score=Score+(case when Score>=90 then 0 else 2 end);
热心网友
时间:2022-04-10 04:21
declare
a number;
begin
update result set score=score+2 where score<90;
select min(score) into a from result ;
while a < 60 loop
update result set score=score+2 where score<90;
select min(score) into a from result ;
end loop;
end;
热心网友
时间:2022-04-10 05:56
update Result a
set a.score = case when a.score >=90 then a.score
when a.score + 2 < 60 then a.score + 2 + 2
else a.score + 2
end