SQL字段IF判断问题

select ta.mdmc,ta.rq,ta.spid,ta.spmc,,ta.xszje,tb.xsje,if(ta.xszje>tb.xsje,ta.xszje,tb.xsje) xsze from  

(select mdmc,rq,spid,spmc,xszje, from sale_daily

where rq>='2022-11-23')ta

join

(select rq,mdmc,spid,xsje from sale_sprl

where rq>='2022-11-23') tb

on ta.rq=tb.rq and ta.mdmc=tb.mdmc and  ta.spid=tb.spid 

我要取ta.xszje,tb.xsje后面加一列xsze,有个判断,如果ta.xszje比tb.xsje大,就取ta.xszje,小就取tb.xsje,我语句这样加个IF报错为什么?请指教应该怎么写?

SQL ysbin 发布于 2022-11-25 08:25
1min目标场景问卷 立即参与
回答问题
悬赏:0 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
快乐星光Lv5中级互助
发布于2022-11-25 08:52

sql 在这种情况下一般用case when 语句。xsze 改为  case when ta.xszje>tb.xsje then ta.xszje  when ta.xszje<tb.xsje then tb.xsje else 0 end as xsze    应为可能有=情况,所以加了else 0,如果不需要=情况可以把else 0 去掉。

  • ysbin ysbin(提问者) 谢谢
    2022-11-25 09:08 
  • 快乐星光 快乐星光 回复 ysbin(提问者) ()后面加一个别名
    2022-11-25 09:13 
  • ysbin ysbin(提问者) 回复 快乐星光 套一层都需要加别名吗?什么时候需要加?之前好像用的时候不用的
    2022-11-25 09:20 
  • ysbin ysbin(提问者) 回复 快乐星光 也可能我记错了,oracle 确定不用加的
    2022-11-25 09:31 
  • 快乐星光 快乐星光 回复 ysbin(提问者) sql 套用必须加,oracle我不太清楚。
    2022-11-25 10:02 
最佳回答
1
yzm339714Lv6中级互助
发布于2022-11-25 08:48

sql里面 一般没有 if   是 case when  .

(case when ta.xszje>tb.xsje  then ta.xszje else tb.xsje end) as xsze

  • ysbin ysbin(提问者) 感谢,可以了。再请教一下:中间这段查询是正常的,可以出结果,为什么我前面就套了一层加了个 select * from 加前后()就报错了呢。 select * from ( select ta.md,ta.mdmc,ta.rq,ta.loudong,ta.louceng,ta.quyu,ta.spid,ta.spmc,ta.xsbs,ta.xszje,tb.xsje, (case when ta.xszje>tb.xsje then ta.xszje else tb.xsje end) as xsze from (select * from sale_daily where rq>=\'2022-11-23\')ta join (select * from sale_sprl where rq>=\'2022-11-23\') tb on ta.mdmc=tb.mdmc and ta.spid=tb.spid )
    2022-11-25 09:07 
  • 3关注人数
  • 298浏览人数
  • 最后回答于:2022-11-25 08:52
    请选择关闭问题的原因
    确定 取消
    返回顶部