Oracle中計(jì)算除法,解決除數(shù)為零報(bào)錯(cuò)的問(wèn)題及分析
在Oracle數(shù)據(jù)庫(kù)中,需要使用到除法,但是除數(shù)有可能為零,如果直接使用sql中的除法運(yùn)算符(/),則會(huì)報(bào)錯(cuò)
解決方法
計(jì)算除法的語(yǔ)法和示例
--Oracle中計(jì)算除法語(yǔ)法 SELECT case WHEN(NVL(除數(shù), 0))!=0 THEN round(被除數(shù) / 除數(shù),需要保留的小數(shù)位數(shù)) ELSE 0 END result FROM DUAL
例子:
SELECT
t4.NAME,
t4."總成本",
t4."營(yíng)業(yè)額",
t4."利潤(rùn)",
CASE WHEN(NVL( t4."總成本", 0)) !=0
THEN
ROUND(t4."利潤(rùn)" / t4."總成本" , 2)
ELSE
0
END
"利潤(rùn)率"
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 "營(yíng)業(yè)額"
FROM
BRAIN_BAK.TEST_DW_ITEMS_DETA t1
INNER JOIN BRAIN_BAK.TEST_DW_ITEMS_PRICE t2 ON t1.NAME = t2.NAME
) --一張臨時(shí)表
SELECT
t3.NAME,
t3."總成本",
t3."營(yíng)業(yè)額",
t3."營(yíng)業(yè)額" - t3."總成本" AS "利潤(rùn)"
FROM linshi t3
) t4 ;使用 decode ()函數(shù)
decode(A.REFORM_TASK_TOTAL,0,0 , round((A.REFORM_TASK_NUM / A.REFORM_TASK_TOTAL) * 100,2 )) AS 年度改革任務(wù)整改完成率,
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Oracle中serveroutput參數(shù)一次設(shè)置永久保存方法
serveroutput是sqlplus的配置參數(shù),而不是數(shù)據(jù)庫(kù)的配置參數(shù),每次都需要修改并保存sqlplus的配置參數(shù),本文將介紹如何一次設(shè)置永久保存2012-11-11
oracle誤drop/update操作后的數(shù)據(jù)恢復(fù)測(cè)試
本人主要是對(duì)drop/update數(shù)據(jù)后,在允許有時(shí)間內(nèi)進(jìn)行數(shù)據(jù)恢復(fù),操作性強(qiáng),比較實(shí)用。不對(duì)理論進(jìn)行講訴,需要的朋友可以參考下2015-08-08
登錄oracle數(shù)據(jù)庫(kù)時(shí)密碼忘記的解決方法
登錄本地oracle數(shù)據(jù)庫(kù)時(shí),忘記密碼了,這種情況時(shí)有發(fā)生,下面有個(gè)不錯(cuò)的解決方法,希望對(duì)大家有所幫助2014-01-01
詳細(xì)聊聊Oracle表碎片對(duì)性能有多大的影響
當(dāng)針對(duì)一個(gè)表的刪除操作很多時(shí),表會(huì)產(chǎn)生大量碎片,下面這篇文章主要給大家介紹了關(guān)于Oracle表碎片對(duì)性能影響的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03
oracle連接ODBC sqlserver數(shù)據(jù)源的詳細(xì)步驟
這篇文章主要介紹了oracle連接sqlserver數(shù)據(jù)源ODBC的詳細(xì)步驟,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07
Oracle與SQL Server在企業(yè)應(yīng)用的比較
Oracle與SQL Server在企業(yè)應(yīng)用的比較...2007-03-03

