Tips: Como usar Case en Oracle

Puede darse el caso de que querramos devolver un texto o valor dependiendo del dato de una columna en una tabla Oracle.

Por ejemplo

Si tenemos una tabla de nombre Empleados_Salarios con los campos
Empleado, Salario
y con valores

Agustin, 20.000
Ignacio, 1.500
Nicolás, 10.000

Y en un select queremos en vez de reflejar los valores exactos y mostrar categorías, podemos usar la sentencia CASE de Oracle como el siguiente ejemplo muestra.

Select Empleado,
CASE
when Salario < 5.000 then ‘Salario Bajo’
when Salario >= 5.000 and Salario < 15.000 then ‘Salario Medio’
else ‘Salario Alto’
END Categoria_Salario
from Empleados_Salarios;

La sentencia contiene las palabras reservadas “when” para establecer las condiciones, “else” para el caso que no cumpla una de las condiciones when, y “CASE” y “END” que encierran la cláusula condicional, coloqué la palabra “Categoria_Salario” como alias de la columna de categorías.

Otro ejemplo sencillo podría ser:

Tengo una tabla de nombre Stock con 3 campos:

Material char(20),
Entradas number(10),
Salidas number(10)

Y quisiera saber los saldos positivos de Entradas – Salidas, y en el caso que las Salidas sean mayores que las Entradas, no quiero mostrar el valor negativo, sino un valor 0.
Tengo que tener en cuenta los valores nulos que pudiera tener de Entradas o Salidas

El select sería el siguiente:

Select Material,Nvl(entradas,0) Entradas, Nvl(salidas,0) Salidas,
Case Nvl(entradas,0) – Nvl(salidas,0) > 0 then Nvl(entradas,0) – Nvl(salidas,0)
else 0
End Diferencia
from Stock;

Espero que estos mini ejemplos sean de utilidad.

Fabricio De los Santos
Gerencia de Proyectos – Consultoría GeneXus –
ERP – Sistemas de Misión Crítica – Bases de Datos.

Vea mis blogs en:
www.fabriciodelossantos.com

Deja un comentario