Wie wählen Sie alle Spalten und das Ergebnis einer CASE-statement in Oracle 11g aus?

Ich möchte * auswählen und muss nicht alle einzelnen Spalten eingeben, sondern auch eine benutzerdefinierte Spalte mit einer case-statement. Ich habe Folgendes versucht:

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; 

Aber es beschweren sich das

 ORA-00923: FROM keyword not found where expected 

Solutions Collecting From Web of "Wie wählen Sie alle Spalten und das Ergebnis einer CASE-statement in Oracle 11g aus?"

Fügen Sie einen Alias ​​für meine Tabelle wie folgt hinzu:

 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; 

Dies ist nicht abhängig von einer bestimmten Oracle-Version, nicht sicher über andere databaseen.

Wie IronGoofy sagt, fügen Sie den Tabellenalias hinzu.

Beachten Sie, dass es eine handliche Case-Syntax gibt, die für Ihre Situation geeignet ist:

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

Mach es so:

 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;