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 без предшествующей переменной.

Другие вопросы по тегам