[SQL ] 欄位是0的計算求解

作者: paranoia5201 (邁向研究生)   2019-10-30 09:59:47
資料庫名稱:Oracle
資料庫版本:??
內容/問題描述:
我的資料長相如下
Time A B
27-OCT-19 2085046 3702122
20-OCT-19 4721397 8850998
13-OCT-19 5824087 9722262
06-OCT-19 6207165 11005451
29-SEP-19 8014455 13449718
22-SEP-19 5565446 8359561
15-SEP-19 1640913 2579993
08-SEP-19 0 0
01-SEP-19 0 0
25-AUG-19 0 0
期望建立一個C欄位,公式為C = (B-A) / B
由於最後三欄的資料都是零,所以會出現錯誤碼:
ORA-01476: divisor is equal to zero
現在我的作法是拿掉那三個時間後做計算就可以了,
但是主管希望還是可以在C欄位裡面出現這三個時間並顯示0,
請問有什麼方式可以處理?
感謝指教~
現在的SQL寫法:
select time, a, b, ((b - a) / b) as c
from table
where to_char(time, 'YYYYMMDD') not in ('20190825', '20190901', '20190908')
作者: retsamsu   2019-10-30 10:59:00
google oracle iif
作者: cp83611   2019-10-30 23:58:00
亂寫一波~select time, a, b, ((b - a) / b) as cfrom tablewhere b<>0union allselect time, a, b, '0' as cfrom tablewhere b=0
作者: funk6478 (大恩)   2019-10-31 14:56:00
可以用CASE吧 CASE WHEN b=0 THEN 0 ELSE (b-a)/bEND C
作者: cutekid (可愛小孩子)   2019-10-31 20:46:00
推 funk6478 說的用 case when
作者: MOONY135 (談無慾)   2019-11-01 14:15:00
直接if b is zero就直接c=0阿

Links booklink

Contact Us: admin [ a t ] ucptt.com