我想选择*,而不必输入所有单独的列,但我还想包含一个带有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
答案 0 :(得分:38)
为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版本,也不确定其他数据库。
答案 1 :(得分:7)
正如IronGoofy所说,添加表别名。
另外请注意,有一个方便的搜索案例语法适合您的情况:
select t.*,
case PRI_VAL
when 1 then 'High'
when 2 then 'Med'
when 3 then 'Low'
end as PRIORITY
from MYTABLE t;
答案 2 :(得分:-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;