要求是计算一个明细表里的总金额
一开始这样写的
select sum(txn_amt) from 表名 where 查询条件
但是当没有记录的时候会就返回空
怎么说呢,客户如果看到是空也许会认为是出错了,金额的字段是个decimal,也许返回0.00元更合理吧
查看了一下同事写的
有两种写法
1.select nvl(sum(txn_amt),0.00) from 表名 where 查询条件
NVL(expression_1, expression_2),如果 expression_1 的计算结果为 null 值,则 NVL( ) 返回 expression_2。如果 expression_1 的计算结果不是 null 值,则返回 expression_1。expression_1 和 expression_2 可以是任意一种数据类型。如果 expression_1 与 expression_2 的结果皆为 null 值,则 NVL( ) 返回 .NULL.。
2.select coalesce(sum(txn_amt),0.00) from 表名 where 查询条件
COALESCE是一个函数, (expression_1, expression_2, ...,expression_n)依次参考各参数表达式,遇到非null值即停止并返回该值。如果所有的表达式都是空值,最终将返回一个空值。