空功能&修复SQL语句

时间:2014-02-03 22:17:22

标签: sql oracle null

我想更正此声明并显示年薪并将空值替换为0。

我该怎么做呢?

SELECT last_name, salary, commission_pct,
salary * .0333 + commission_pct Bonus_Calc
FROM employees;

谢谢!

2 个答案:

答案 0 :(得分:1)

执行此操作的标准SQL函数是coalesce。 假设名字,姓氏和工资不能是null

SELECT last_name, salary, COALESCE(commission_pct, 0),
       salary * .0333 + COALESCE(commission_pct, 0) Bonus_Calc
FROM   employees;

或者,在Oracle中,您也可以使用NVL

SELECT last_name, salary, NVL(commission_pct, 0),
       salary * .0333 + NVL(commission_pct, 0) Bonus_Calc
FROM   employees;

答案 1 :(得分:1)

您尝试使用0替换NULL个值?假设每个员工都有非NULL薪水,但commission_pct可能是NULL,您可以使用NULL函数将NVL commission_pct替换为0 {/ p} >

NVL( commission_pct, 0 )

至于纠正计算,你所要求的并不明显。将佣金百分比添加到薪水中是没有意义的。您通常需要一些东西(比如总销售额)来增加佣金百分比,以便获得可以加到工资中的美元金额。我也很困惑,如何将薪水乘以0.0333才有意义。我很难想象salary代表的1/30。