2016-02-23 5 views
0

Я пытаюсь закодировать запрос, в котором будут отображаться сотрудники, которые работают в качестве разработчиков ('%_PROG') или менеджеров ('%_MAN'). Мой запрос прекрасен, за исключением второй строки с CASE WHEN THEN. Я получаю сообщение об ошибке:Oracle SQL: 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 

Что я делаю неправильно?

+0

У вас ошибка в том, где п. «Разработчик» избыточен до OR –

+0

@OleksiiAza исправил это, но все еще получал ошибку. Есть идеи? – naomi88

+0

также я считаю, что вы должны использовать одинарные кавычки в инструкции «CASE THEN», когда вы указываете результат. Например. «Разработчик» и «Менеджер» –

ответ

0

Попробуйте использовать одиночные кавычки в нашем заявлении: (CASE WHEN JOB_ID LIKE '%_PROG' THEN 'Developer' ELSE 'Manager' END) JOB_ID

0

Если вы имеете в виду столбцы, «Разработчик» и «Менеджер» в порядке. Если вы имели в виду строки, заключите их в одинарные кавычки.

Вы не создаете столбец, а конкатенируете выражение CASE с другими выражениями, поэтому оставьте JOB_ID после него, который изначально имел в виду как псевдоним столбца. (как теперь я вижу, вы редактировали его прочь)

Смежные вопросы