(t.a-t.b)/t.b 这个表达式是动态的. 怎么判断被除数是不是0. 如果是0就把整个表达式为0
不用decode函数
oracle select t.* , (t.a-t.b)/t.b from( select a,b,c,d from table_test ) t
答案:4 悬赏:0 手机版
解决时间 2021-03-07 00:07
- 提问者网友:原来太熟悉了会陌生
- 2021-03-06 18:59
最佳答案
- 五星知识达人网友:拜訪者
- 2021-03-06 19:05
select t.* , (t.a-t.b)/t.b from( select a,b,c,d from table_test ) t
where t.b <> 0
union all
select t.* ,0 from( select a,b,c,d from table_test ) t
where t.b = 0
哈哈
where t.b <> 0
union all
select t.* ,0 from( select a,b,c,d from table_test ) t
where t.b = 0
哈哈
全部回答
- 1楼网友:老鼠爱大米
- 2021-03-06 20:42
SELECt CASE
WHEN (t.b != 0)
THEN (SELECT (t.a - t.b) / t.b
FROM (SELECt product_id a, brand_id b, sub_brand_id c,
product_cata d
FROM pm_product) s
WHERe s.a = t.a)
END CASE
FROM (SELECt product_id a, brand_id b, sub_brand_id c, product_cata d
FROM pm_product) t
通过case when 就能解决你的问题,如果满意请加分,谢谢!
- 2楼网友:有你哪都是故乡
- 2021-03-06 20:21
你好!
select t.* ,
case t.b WHEN 0 THEN 0 ELSE (t.a-t.b)/t.b END
from (select a,b,c,d from table_test ) t 即可
如有疑问,请追问。
- 3楼网友:蕴藏春秋
- 2021-03-06 19:53
select a,b,c,d
,case when b=0 then
0
else
(t.a-t.b)/t.b
end case
from table_test
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯