Oracle 条件判断怎么写

suyi5784 2017-06-26 10:37:53
SELECT a1.SU36,a0.*,a2.*,
IF FN02==NULL
THEN FN02
ELSIF FN02!=NULL
THEN (
IF SJ2>SJ
THEN FN04
ELSE THEN SU36
END IF
)
END IF SU36
FROM FE_APP5.Z_DFXQ a0
LEFT JOIN FE_BASE5.SYS_USERS A1 ON A0.SU00=A1.SU00
LEFT JOIN FE_APP5.Z_TG_SCORE A2 ON A0.SU00=A2.FN02


我想实现当FN02不为空时,则判断SJ2是否大于SJ,是的话则SU36的值为FN04,否则,SU36的值不变,但是这么写报from不存在,请问该怎么写合适呢
...全文
795 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
有意1314 2017-06-30
  • 打赏
  • 举报
回复
declare --FN02 T.FN02%TYPE, SJ2 T.SJ2%TYPE, SJ T.SJ%TYPE, SU36 T.SU36%TYPE, --FN04 T.FN04%TYPE; BEGIN SELECT T.SJ2 INTO SJ2,T.SJ INTO JS FROM T WHERE FN02 IS NOT NULL; IF SJ2>SJ THEN UPDATE T SET SU36=FN04; 结构应该是这样的,其他的就不帮你了
卖水果的net 2017-06-26
  • 打赏
  • 举报
回复
不过,要拼接到 select 中,要用 case when 语法。
卖水果的net 2017-06-26
  • 打赏
  • 举报
回复
if v_id is null then todo… end if;
elfenro 2017-06-26
  • 打赏
  • 举报
回复
还有空值的话写个where,分2段写然后可以用union拼一下就好了
elfenro 2017-06-26
  • 打赏
  • 举报
回复
select a1.SU36,a0.*,a2.*,decode(sign(SJ2-SJ),1,'FN04',SU36) FROM FE_APP5.Z_DFXQ a0 LEFT JOIN FE_BASE5.SYS_USERS A1 ON A0.SU00=A1.SU00 LEFT JOIN FE_APP5.Z_TG_SCORE A2 ON A0.SU00=A2.FN02 这样应该可以吧,用decode语句

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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