[英]Oracle Case statement to write zero when the query returns null
我有一個 Oracle 查詢與 Union ALL。
SELECT ROUND(AVG(BATTERYVOLTAGE),2)AVGVOLTAGE FROM MYTABLE WHERE trailerid = 3000 and DATADATE >= TO_DATE('25/08/2021 06:00:00', 'dd/mm/yyyy HH24:MI:SS') AND DATADATE <= TO_DATE('25/08/2021 06:05:00', 'dd/mm/yyyy HH24:MI:SS')
UNION ALL
SELECT ROUND(AVG(BATTERYVOLTAGE),2)AVGVOLTAGE FROM MYTABLE WHERE trailerid = 3000 and DATADATE >= TO_DATE('25/08/2021 07:00:00', 'dd/mm/yyyy HH24:MI:SS') AND DATADATE <= TO_DATE('25/08/2021 07:05:00', 'dd/mm/yyyy HH24:MI:SS')
UNION ALL
SELECT ROUND(AVG(BATTERYVOLTAGE),2)AVGVOLTAGE FROM MYTABLE WHERE trailerid = 3000 and DATADATE >= TO_DATE('25/08/2021 08:00:00', 'dd/mm/yyyy HH24:MI:SS') AND DATADATE <= TO_DATE('25/08/2021 08:05:00', 'dd/mm/yyyy HH24:MI:SS')
UNION ALL
SELECT ROUND(AVG(BATTERYVOLTAGE),2)AVGVOLTAGE FROM MYTABLE WHERE trailerid = 3000 and DATADATE >= TO_DATE('25/08/2021 09:00:00', 'dd/mm/yyyy HH24:MI:SS') AND DATADATE <= TO_DATE('25/08/2021 09:05:00', 'dd/mm/yyyy HH24:MI:SS')
UNION ALL
SELECT ROUND(AVG(BATTERYVOLTAGE),2)AVGVOLTAGE FROM MYTABLE WHERE trailerid = 3000 and DATADATE >= TO_DATE('25/08/2021 10:00:00', 'dd/mm/yyyy HH24:MI:SS') AND DATADATE <= TO_DATE('25/08/2021 10:05:00', 'dd/mm/yyyy HH24:MI:SS')
UNION ALL
SELECT ROUND(AVG(BATTERYVOLTAGE),2)AVGVOLTAGE FROM MYTABLE WHERE trailerid = 3000 and DATADATE >= TO_DATE('25/08/2021 11:00:00', 'dd/mm/yyyy HH24:MI:SS') AND DATADATE <= TO_DATE('25/08/2021 11:05:00', 'dd/mm/yyyy HH24:MI:SS');
當我執行此查詢時,我得到一個 output 這樣的
AVGVOLTAGE
----------
9.5
12.7
12.7
如您所見,2、3、4 查詢的值為 null。如果找不到數據,有什么方法可以返回零? 我一直在關注這個https://www.oracletutorial.com/oracle-basics/oracle-case/但沒有成功。 :(。 非常感謝您的參與。
在select
語句中使用decode
或nvl
。
例子:
1.使用decode
語句
select
decode(BATTERYVOLTAGE,null,'NOTFOUND',BATTERYVOLTAGE)
from
MYTABLE
2.使用nvl
語句
select
nvl(BATTERYVOLTAGE,'NOTFOUND')
from
MYTABLE
請確保“未找到數據”表示“NULL”
有關更多信息,請查看此 url 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.