IOKELU
Nivel: Intermedio
💡 Prueba las consultas:
Puedes ejecutar cualquier consulta SQL en nuestra consola interactiva: Abrir consola SQL →

CASE en SQL: lógica condicional dentro de consultas

La expresión CASE permite crear condiciones dentro de una consulta SQL. Es equivalente a un “if / else” y se usa para clasificar, transformar y generar columnas calculadas.

1. ¿Qué es CASE?

CASE permite evaluar condiciones y devolver valores diferentes según el resultado. Es la forma de SQL de implementar lógica condicional.


SELECT nombre,
       CASE 
           WHEN edad >= 18 THEN 'Adulto'
           ELSE 'Menor'
       END AS categoria
FROM usuarios;
    

2. Estructura de CASE


CASE
    WHEN condición THEN resultado
    WHEN condición THEN resultado
    ELSE resultado
END
    

3. CASE simple


SELECT nombre,
       CASE ciudad
           WHEN 'Madrid' THEN 'Centro'
           WHEN 'Barcelona' THEN 'Cataluña'
           ELSE 'Otra zona'
       END AS zona
FROM usuarios;
    

4. CASE con condiciones múltiples


SELECT nombre, edad,
       CASE
           WHEN edad < 18 THEN 'Menor'
           WHEN edad BETWEEN 18 AND 65 THEN 'Adulto'
           ELSE 'Jubilado'
       END AS categoria
FROM usuarios;
    

5. CASE dentro de ORDER BY

CASE también puede usarse para ordenar resultados de forma personalizada.


SELECT nombre, ciudad
FROM usuarios
ORDER BY 
    CASE ciudad
        WHEN 'Madrid' THEN 1
        WHEN 'Barcelona' THEN 2
        ELSE 3
    END;
    

6. Ejemplos prácticos


SELECT producto, precio,
       CASE 
           WHEN precio < 20 THEN 'Barato'
           WHEN precio BETWEEN 20 AND 50 THEN 'Medio'
           ELSE 'Caro'
       END AS categoria
FROM productos;

SELECT nombre, salario,
       CASE 
           WHEN salario IS NULL THEN 'Sin datos'
           ELSE 'Registrado'
       END AS estado_salario
FROM empleados;
    

7. Ejercicios para practicar

8. Mini‑proyecto: Clasificación de productos


CREATE TABLE productos (
    id INT PRIMARY KEY,
    nombre VARCHAR(50),
    precio DECIMAL(10,2)
);

INSERT INTO productos VALUES
(1, 'Camiseta', 19.99),
(2, 'Pantalón', 29.99),
(3, 'Chaqueta', 59.99);

SELECT nombre, precio,
       CASE
           WHEN precio < 20 THEN 'Barato'
           WHEN precio BETWEEN 20 AND 50 THEN 'Medio'
           ELSE 'Caro'
       END AS categoria
FROM productos;
    

9. Errores comunes

10. Preguntas frecuentes

¿CASE es como un IF?

Sí, es la forma SQL de hacer lógica condicional.

¿Puedo usar CASE en cualquier parte?

Sí: SELECT, ORDER BY, GROUP BY, HAVING…


Siguiente guía

SQL Intermedio – Subqueries →