甲骨文 SQL:案例
Oracle SQL: CASE WHEN THEN
我正在尝试编写一个查询代码,该查询将显示作为开发人员 ('%_PROG'
) 或经理 ('%_MAN'
) 工作的员工。我的查询很好,除了带有 CASE WHEN THEN
的第二行。我收到错误消息:
ORA-00923 FROM keyword not found where expected
所以问题一定出在第二行,即:
(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 [=13=]6,100
我做错了什么?
如果您指的是列,"Developer" 和 "Manager" 都可以。如果您指的是字符串,请将它们括在单引号中。
您不是在创建列,而是将 CASE 表达式与其他表达式连接起来,因此删除它后面的 JOB_ID
,这原本是列别名。 (我现在看到,你已经把它编辑掉了)
尽量在我们的语句中使用单引号:
(CASE WHEN JOB_ID LIKE '%_PROG' THEN 'Developer' ELSE 'Manager' END) JOB_ID
我正在尝试编写一个查询代码,该查询将显示作为开发人员 ('%_PROG'
) 或经理 ('%_MAN'
) 工作的员工。我的查询很好,除了带有 CASE WHEN THEN
的第二行。我收到错误消息:
ORA-00923 FROM keyword not found where expected
所以问题一定出在第二行,即:
(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 [=13=]6,100
我做错了什么?
如果您指的是列,"Developer" 和 "Manager" 都可以。如果您指的是字符串,请将它们括在单引号中。
您不是在创建列,而是将 CASE 表达式与其他表达式连接起来,因此删除它后面的 JOB_ID
,这原本是列别名。 (我现在看到,你已经把它编辑掉了)
尽量在我们的语句中使用单引号:
(CASE WHEN JOB_ID LIKE '%_PROG' THEN 'Developer' ELSE 'Manager' END) JOB_ID