Как вы выбираете все столбцы, а также результат выражения CASE в oracle 11g?
Я хочу выбрать * и не указывать все отдельные столбцы, но я также хочу включить пользовательский столбец с аргументом 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
Ответы
Ответ 1
Добавьте псевдоним для 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, а не о других базах данных.
Ответ 2
Как говорит IronGoofy, добавьте псевдоним таблицы.
В другой заметке имейте в виду, что есть удобный искомый синтаксис case, который подходит для вашей ситуации:
select t.*,
case PRI_VAL
when 1 then 'High'
when 2 then 'Med'
when 3 then 'Low'
end as PRIORITY
from MYTABLE t;
Ответ 3
Сделайте это так:
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;