2014-09-30 2 views
-1

мне нужно ответить на следующий вопрос, который читаетДЕКОДИРОВАТЬ функция синтаксиса

enter image description here

Я написал следующий код

SELECT job_id, 
DECODE(job_id,A, 'Ad_Pres', 
B,'St_Man', 
C,'IT_PROG', 
)JOBID, GRADE 
FROM emplyee_grade; 
ORDER BY job_id 

Oracle говорит мне «не хватает выражение» что я делаю Неправильно здесь?

Спасибо за помощь.

+0

либо указать значение по умолчанию или удалить последнюю запятую в ваших аргументах декодирования –

+0

Ваш запрос является неправильным двумя способами, синтаксический и функционально. Проверьте мой ответ. –

ответ

3

Ваш запрос неверен двумя способами.

  1. Как уже отмечалось другими, есть ошибка синтаксис, удалить последнюю запятую.

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

Таким образом, правильный запрос:

SQL> WITH DATA AS(
    2 SELECT 'AD_PRES' JOB_ID FROM DUAL UNION ALL 
    3 SELECT 'ST_MAN' JOB_ID FROM DUAL UNION ALL 
    4 SELECT 'IT_PROG' JOB_ID FROM DUAL UNION ALL 
    5 SELECT 'THE REST' JOB_ID FROM DUAL) 
    6 SELECT job_id, 
    7 DECODE(JOB_ID, 'AD_PRES','A','ST_MAN','B','IT_PROG','C','THE REST','D','DEFAULT') GRADE 
    8 FROM DATA 
    9/

JOB_ID GRADE 
-------- ------- 
AD_PRES A 
ST_MAN B 
IT_PROG C 
THE REST D 

SQL> 
+1

Очень хорошо объяснено. –

+0

Спасибо @Patrick. Я хочу, чтобы каждый вопрос SQL также имел тестовый пример, чтобы сократить время и усилия, чтобы перепроектировать, что сказать? –

+0

Да, это было бы хорошо. –

3
DECODE(job_id,'A', 'Ad_Pres', 
'B','St_Man', 
'C','IT_PROG', <-- take this comma away 
) 

Заберите дополнительную запятую, и я считаю, что A, B, C должны быть в одинарных кавычках.

+0

Спасибо @ dcp, но затем я получаю недопустимую ошибку персонажа – Marilee

+0

@Marilee - Хорошо, см. Последнее редактирование. – dcp

+0

@Marilee удаляет также последнюю полуплотность перед заказом по предложению –