sql - transponer - pivot oracle columns to rows
¿Cómo selecciona todas las columnas, más el resultado de una declaración CASE en Oracle 11g? (3)
Quiero seleccionar *, y no tener que escribir todas las columnas individuales, pero también quiero incluir una columna personalizada con una declaración de caso. Intenté lo siguiente:
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;
Pero se queja de que
ORA-00923: FROM keyword not found where expected
Agrega un alias para mytable como este:
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;
Esto no depende de ninguna versión específica de Oracle, no estoy seguro acerca de otras bases de datos.
Como dice IronGoofy, agregue el alias de la tabla.
En una nota diferente, tenga en cuenta que hay una sintaxis de casos de búsqueda práctica que sería adecuada para su situación:
select t.*,
case PRI_VAL
when 1 then ''High''
when 2 then ''Med''
when 3 then ''Low''
end as PRIORITY
from MYTABLE t;
Hazlo asi:
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;