如何选择所有列,以及oracle 11g中CASE语句的结果?

Kev*_*uli 25 sql oracle ora-00923

我想选择*,而不必输入所有单独的列,但我还想包含一个带有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;
Run Code Online (Sandbox Code Playgroud)

但它抱怨说

ORA-00923: FROM keyword not found where expected
Run Code Online (Sandbox Code Playgroud)

Tho*_*ten 42

为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;
Run Code Online (Sandbox Code Playgroud)

这不依赖于任何特定的Oracle版本,也不确定其他数据库.


Dav*_*dge 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; 
Run Code Online (Sandbox Code Playgroud)