CASE WHEN

yukiMark 2010-11-25 02:16:49
UPDATE STUDENT A SET(SCRC)=(
CASE A.POINT
WHEN 0.9 THEN
CASE A.LL
WHEN A.LL>=0.65 AND A.LL<0.7 THEN
8
WHEN A.LL>=0.7 THEN 9 END
WEHN 0.85 THEN
CASE A.LL
WHEN A.LL>=0.85 THEN 2
ELSE 3
END
END
)


WHEN A.LL>=0.65 AND A.LL<0.7 THEN 这里缺少关键字,少什么啊
...全文
101 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yukiMark 2010-11-25
  • 打赏
  • 举报
回复
哦 这里面应当是你写的那个效率最高吧
update STUDENT set SCRC=(case when POINT=0.9 and LL>=0.65 AND LL<0.7 then 8
when POINT=0.9 and LL>=0.7 then 9
when POINT=0.85 and LL>=0.85 then 2
when POINT=0.85 and LL<0.85 then 3
end)
心中的彩虹 2010-11-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 how8586 的回复:]
UPEDATE STUDENT A SET (SCRC)=(
IF A.POINT=0.9 AND A.LL>=0.65 AND A.LL<0.7 THEN 8
ELSIF A.POINT=0.9 AND A.LL>0.7 THEN 9
ELSE 2
END IF;

)
这个格式哪里不对啊
IF A.POINT=0.9 AND A.LL>=0.65 AND A.L……
[/Quote]
当然 这样不行 呵呵 if then end if 是在plsql
xiaobn_cn 2010-11-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 how8586 的回复:]
UPEDATE STUDENT A SET (SCRC)=(
IF A.POINT=0.9 AND A.LL>=0.65 AND A.LL<0.7 THEN 8
ELSIF A.POINT=0.9 AND A.LL>0.7 THEN 9
ELSE 2
END IF;

)
这个格式哪里不对啊
IF A.POINT=0.9 AND A.LL>=0.65 AND A.L……
[/Quote]
完全不对啊,IF关键字不能用在SQL里面的!
yukiMark 2010-11-25
  • 打赏
  • 举报
回复
UPEDATE STUDENT A SET (SCRC)=(
IF A.POINT=0.9 AND A.LL>=0.65 AND A.LL<0.7 THEN 8
ELSIF A.POINT=0.9 AND A.LL>0.7 THEN 9
ELSE 2
END IF;

)
这个格式哪里不对啊
IF A.POINT=0.9 AND A.LL>=0.65 AND A.LL<0.7 缺少右括号
xiaobn_cn 2010-11-25
  • 打赏
  • 举报
回复
少了个括号。。。。

UPDATE STUDENT A SET(SCRC)=(
select CASE A.POINT
WHEN 0.9 THEN
(CASE
WHEN A.LL>=0.65 AND A.LL<0.7 THEN 8
WHEN A.LL>=0.7 THEN 9
END)
WHEN 0.85 THEN
(CASE
WHEN A.LL>=0.85 THEN 2
ELSE 3
END)
END
)
xiaobn_cn 2010-11-25
  • 打赏
  • 举报
回复
如果要嵌套,下面的代码应当可以满足你的要求:

UPDATE STUDENT A SET(SCRC)=(
select CASE
WHEN A.POINT = 0.9 THEN
(CASE
WHEN A.LL>=0.65 AND A.LL<0.7 THEN 8
WHEN A.LL>=0.7 THEN 9
END)
WHEN A.POINT = 0.85 THEN
(CASE
WHEN A.LL>=0.85 THEN 2
ELSE 3
END)
END
心中的彩虹 2010-11-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 how8586 的回复:]
哦 要是用IF来写怎么弄啊 我的基本格式不是很明白
[/Quote]
跟着你写的case 思路来就是
yukiMark 2010-11-25
  • 打赏
  • 举报
回复
哦 要是用IF来写怎么弄啊 我的基本格式不是很明白
心中的彩虹 2010-11-25
  • 打赏
  • 举报
回复
[Quote=引用楼主 how8586 的回复:]
UPDATE STUDENT A SET(SCRC)=(
CASE A.POINT
WHEN 0.9 THEN
CASE A.LL
WHEN A.LL>=0.65 AND A.LL<0.7 THEN
8
WHEN A.LL>=0.7 THEN 9 END
WEHN 0.85 THEN
CASE A.LL
WHEN A.LL>=0.85 T……
[/Quote]




--你的
UPDATE STUDENT A SET SCRC=(CASE A.POINT
WHEN 0.9 THEN
CASE
WHEN A.LL>=0.65 AND A.LL<0.7 THEN 8
WHEN A.LL>=0.7 THEN 9
END
WEHN 0.85 THEN
CASE WHEN A.LL>=0.85 THEN 2 ELSE 3 END
END
)


--我写的
update STUDENT set SCRC=(case when POINT=0.9 and LL>=0.65 AND LL<0.7 then 8
when POINT=0.9 and LL>=0.7 then 9
when POINT=0.85 and LL>=0.85 then 2
when POINT=0.85 and LL<0.85 then 3
end)














yukiMark 2010-11-25
  • 打赏
  • 举报
回复
我这是CASE WHEN里 嵌套一个CASE WHEN 格式是对的 是不是不能嵌套啊
sunlaji008 2010-11-25
  • 打赏
  • 举报
回复
[Quote=引用楼主 how8586 的回复:]
UPDATE STUDENT A SET(SCRC)=(
CASE A.POINT
WHEN 0.9 THEN
CASE A.LL
WHEN A.LL>=0.65 AND A.LL<0.7 THEN
8
……
[/Quote]
你这写的神马东西嘛。。。。看看基本语法
xiaobn_cn 2010-11-25
  • 打赏
  • 举报
回复
[Quote=引用楼主 how8586 的回复:]
UPDATE STUDENT A SET(SCRC)=(
CASE A.POINT
WHEN 0.9 THEN
CASE A.LL
WHEN A.LL>=0.65 AND A.LL<0.7 THEN
8
WHEN A.LL>=0.7 THEN 9 END
WEHN 0.85 THEN
CASE A.LL
WHEN A.LL>=0.85 T……
[/Quote]
CASE WHEN的格式弄错了。格式如下:
CASE 条件
WHEN 分支1 THEN 值1
WHEN 分支2 THEN 值2
......
END

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧