繁体   English   中英

Oracle SQL:以后的情况

[英]Oracle SQL: CASE WHEN THEN

我正在尝试编写一个查询,该查询将显示作为开发人员( '%_PROG' )或经理( '%_MAN' )工作的员工。 我的查询很好,除了CASE WHEN THEN的第二行。 我收到错误消息:

ORA-00923 FROM关键字未在预期位置找到

因此问题必须出在第二行,即:

(CASE WHEN JOB_ID LIKE '%_PROG' THEN "Developer" ELSE "Manager" END) JOB_ID

这是整个查询:

SELECT 'Employee# ' || EMPLOYEE_ID 
       || ' named ' || FIRST_NAME
       || ' ' || LAST_NAME || ' who is ' 
       || CASE WHEN JOB_ID LIKE '%_PROG' THEN "Developer" ELSE "Manager" END 
       || ' will have a new salary of $'
       || ROUND((SALARY  +((SALARY/100)*25)),-2) AS "Employees with higher salary"
  FROM EMPLOYEES 
 WHERE JOB_ID LIKE '%_PROG' OR JOB_ID LIKE '%_MAN'
   AND (SALARY >= 3000 AND SALARY <= 5000)
 ORDER BY EMPLOYEE_ID;

输出应如下所示:

 Employee# 103 named Anna Clark who is Developer will have a new salary of  $006,100

我究竟做错了什么?

如果您指的是列,则“开发人员”和“经理”都可以。 如果您是指字符串,则将其用单引号引起来。

您不是在创建列,而是将CASE表达式与其他表达式连接在一起,因此JOB_ID原本是列别名的JOB_ID删除。 (如我现在所见,您已将其删除)

尝试在我们的语句中使用单引号:( (CASE WHEN JOB_ID LIKE '%_PROG' THEN 'Developer' ELSE 'Manager' END) JOB_ID

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM