当我试图在Oracle SQL中运行包含CASE表达式的查询时,在预期的位置未找到FROM关键字[重复]

x6yk4ghg  于 2023-04-05  发布在  Oracle
关注(0)|答案(1)|浏览(140)

此问题在此处已有答案

if(condition, then, else) in Oracle(6个答案)
4天前关闭。
这是数据库:enter image description here
我需要显示员工的姓和名,如果佣金不为空,则后面跟着薪水+佣金,否则只显示薪水。
我正在尝试运行以下查询:

SELECT LASTNAME, FIRSTNAME, SALARY, COMMISSION
  2  CASE COMMISSION WHEN IS NOT NULL THEN SALARY+COMMISSION
  3  ELSE SALARY
  4  END AS TOTAL_SALARY FROM EMPLOYEE;

它总是显示以下错误:enter image description here
有人能帮我解决这个问题吗?
谢谢

t1qtbnec

t1qtbnec1#

一个简单的选项是使用NVL

SELECT LASTNAME, FIRSTNAME, SALARY, COMMISSION,
  salary + nvl(commission, 0) as total_salary
FROM EMPLOYEE;

coalesce

salary + coalesce(commission, 0)

或者case(但这次有效):

salary + case when commission is null then 0
            else commission
       end

相关问题