Oracle 10g: CASE в операторе выбора (ошибка ORA-00936)
Я выполняю это заявление в Oracle 10g.
select CASE Math WHEN BETWEEN 90 AND 100 THEN 'A'
WHEN BETWEEN 80 AND 90 THEN 'B'
WHEN BETWEEN 0 AND 80 THEN 'C'
ELSE 'Invalid score' END
from score
Но я получаю следующую ошибку
ORA-00936: пропущенное выражение
Может кто-нибудь помочь с тем, что мне не хватает?
2 ответа
В операторе SQL CASE
заявление должно быть что-то вроде
SELECT CASE WHEN math BETWEEN 90 AND 100
THEN 'A'
WHEN math BETWEEN 80 AND 90
THEN 'B'
WHEN math BETWEEN 0 AND 80
THEN 'C'
ELSE 'Invalid Score'
END
FROM score
CASE variable WHEN
синтаксис действителен в PL/SQL, но не в SQL.
Вместо использования условия я бы сделал это:
select CASE WHEN math BETWEEN 90 AND 100 THEN 'A'
WHEN math BETWEEN 80 AND 90 THEN 'B'
WHEN math BETWEEN 0 AND 80 THEN 'C'
ELSE 'Invalid score' END
from score
Я не думаю, что Oracle любит функцию BETWEEN без предшествующей переменной.