
¿Alguna vez te has preguntado cómo añadir lógica condicional dentro de una consulta SQL en Oracle? La respuesta está en entender cómo usar IF dentro de un SELECT. Aunque Oracle no tiene una sentencia IF directamente dentro de un SELECT como algunos otros sistemas, sí tiene alternativas muy poderosas.
La clave está en usar funciones como DECODE o la expresión CASE WHEN. DECODE compara un valor con múltiples valores posibles y retorna un resultado diferente para cada coincidencia. Por ejemplo:
SELECT DECODE(estado, 'Activo', 'Cliente Activo', 'Inactivo', 'Cliente Inactivo', 'Cliente Desconocido') AS Estado_Cliente FROM Clientes;
En este ejemplo, la columna `estado` se evalúa. Si es 'Activo', retorna 'Cliente Activo'. Si es 'Inactivo', retorna 'Cliente Inactivo'. Si no coincide con ninguno, retorna 'Cliente Desconocido'.
Must Read
La expresión CASE WHEN es más flexible y permite condiciones más complejas. Aquí un ejemplo:

SELECT CASE
WHEN edad >= 18 THEN 'Adulto'
WHEN edad < 18 THEN 'Menor de Edad'
ELSE 'Edad Desconocida'
END AS Categoria_Edad
FROM Usuarios;
Aquí, si la `edad` es mayor o igual a 18, retorna 'Adulto'. Si es menor a 18, retorna 'Menor de Edad'. En cualquier otro caso (por ejemplo, si la edad es NULL), retorna 'Edad Desconocida'.
Aplicaciones prácticas: Puedes usar estas técnicas para categorizar datos, aplicar descuentos basados en condiciones específicas, o transformar valores para mejorar la presentación de informes. Imagina calcular el impuesto basado en diferentes rangos de ingresos, o asignar niveles de riesgo a clientes según su historial de crédito. DECODE y CASE WHEN te permiten realizar estas tareas directamente en tus consultas SQL, simplificando la lógica en tu aplicación.