Как выбрать все столбцы, а также результат оператора CASE в Oracle 11g? - PullRequest
23 голосов
/ 18 ноября 2009

Я хочу выбрать *, и мне не нужно печатать все отдельные столбцы, но я также хочу включить пользовательский столбец с оператором case. Я попробовал следующее:

select *, (case when PRI_VAL = 1 then 'High'
                when PRI_VAL = 2 then 'Med'
                when PRI_VAL = 3 then 'Low'
          end) as PRIORITY
from MYTABLE;

Но жалуется, что

ORA-00923: FROM keyword not found where expected

Ответы [ 3 ]

39 голосов
/ 18 ноября 2009

Добавьте псевдоним mytable следующим образом:

select t.*, (case when PRI_VAL = 1 then 'High'
                when PRI_VAL = 2 then 'Med'
                when PRI_VAL = 3 then 'Low'
          end) as PRIORITY
from MYTABLE t;

Это не зависит от какой-либо конкретной версии Oracle, не уверен в других базах данных.

7 голосов
/ 18 ноября 2009

Как говорит IronGoofy, добавьте псевдоним таблицы.

Обратите внимание, что существует другой синтаксис поиска, который подходит для вашей ситуации:

select t.*,
       case PRI_VAL
         when 1 then 'High' 
         when 2 then 'Med' 
         when 3 then 'Low' 
       end as PRIORITY 
from MYTABLE t; 
0 голосов
/ 14 марта 2016

Сделай так:

select e.*,
case deptno
when 30 then 'High'
when 20 then 'Medi'
when 10 then 'Low'
else 'Very Low'
end case
from emp e order by deptno desc;
...