1: 在Oracle数据库中,需要使用到除法,但是除数有可能为零,如果直接使用sql中的除法运算符(/),则会报错
解决方法:
计算除法的语法和示例
--Oracle中计算除法语法
SELECT case WHEN(NVL(除数, 0))!=0 THEN round(被除数 / 除数,需要保留的小数位数) ELSE 0 END result FROM DUAL
例子:
SELECT
t4.NAME,
t4."总成本",
t4."营业额",
t4."利润",
CASE WHEN(NVL( t4."总成本", 0)) !=0
THEN
ROUND(t4."利润" / t4."总成本" , 2)
ELSE
0
END
"利润率"
FROM
(
WITH linshi AS (
SELECT
t2.NAME,
(t2.PUR_PRICE * t1.SALE_NUM) + t1.HUMAN_COST + t1.TRAN_COST + t1.OTH_COST AS "总成本",
t2.PRICE * t1.SALE_NUM AS "营业额"
FROM
BRAIN_BAK.TEST_DW_ITEMS_DETA t1
INNER JOIN BRAIN_BAK.TEST_DW_ITEMS_PRICE t2 ON t1.NAME = t2.NAME
) --一张临时表
SELECT
t3.NAME,
t3."总成本",
t3."营业额",
t3."营业额" - t3."总成本" AS "利润"
FROM linshi t3
) t4 ;
2:使用 decode ()函数
decode(A.REFORM_TASK_TOTAL,0,0 ,
round((A.REFORM_TASK_NUM / A.REFORM_TASK_TOTAL) * 100,2 ))
AS 年度改革任务整改完成率,
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/121373.html