Módulo 5 · Consultas avanzadas

Crea categorías con CASE

Genera valores distintos según las condiciones de cada fila.

20 minNivel IntermedioAntes necesitas: Condiciones y alias

0 de 45 lecciones

Al terminar, podrás

  • Crear una columna calculada mediante condiciones ordenadas.
  • Detectar cuándo una condición general oculta otra más específica.
  • Decidir qué debe ocurrir cuando ninguna condición se cumple.

Recupera lo aprendido: ¿Qué ocurre en WHERE cuando una condición contiene NULL y su resultado es desconocido?

La idea clave

CASE evalúa los WHEN de arriba abajo y devuelve el resultado de la primera condición verdadera. El orden forma parte de la lógica.

Diseña los intervalos antes de escribir: empieza por el caso más restrictivo y comprueba los valores frontera. ELSE cubre todo lo que no entró antes.

La sintaxis básica

Estructura
CASE
  WHEN condicion_1 THEN resultado_1
  WHEN condicion_2 THEN resultado_2
  ELSE resultado_restante
END AS alias

Ejemplo paso a paso

Clasificaremos los productos como precio alto desde 200, medio desde 50 y bajo en los demás casos.

SQL
SELECT nombre, precio,
       CASE
         WHEN precio >= 200 THEN 'alto'
         WHEN precio >= 50 THEN 'medio'
         ELSE 'bajo'
       END AS tramo
FROM productos
ORDER BY precio DESC, id;
Resultado esperado
nombrepreciotramo
Portátil Pro999,00alto
Monitor 27249,00alto
Monitor 24179,00medio
Disco SSD89,00medio
Auriculares69,90medio
Altavoz54,00medio
Teclado49,50bajo
Ratón24,90bajo
Cable USB-C12,00bajo

Cómo funciona

  1. Los precios de 200 o más terminan en alto.
  2. La segunda condición solo recibe precios menores de 200; desde 50 son medio.
  3. ELSE cubre los precios restantes sin repetir condiciones.
Comprueba tu comprensión

¿Por qué debe aparecer primero precio >= 200?

Un error habitual

Colocar primero la condición más amplia

Consulta problemática
CASE
  WHEN precio >= 50 THEN 'medio'
  WHEN precio >= 200 THEN 'alto'
END

Todo precio de 200 o más también cumple precio >= 50, así que nunca alcanza el segundo WHEN. Reordena las condiciones y añade ELSE si no quieres producir NULL.

Practica con datos

Laboratorio SQL

Resuelve la consulta

Pendiente

Escribe una consulta que devuelva nombre y una columna disponibilidad: 'agotado' cuando stock sea 0 y 'disponible' en los demás casos.

Resultado esperado: 9 filas con nombre, disponibilidad. El orden de las filas no importa.

Ver tablas y datos

Cargando la estructura del ejercicio…

La consulta usa datos ficticios y se ejecuta solo en este navegador.

Fuentes técnicas consultadas

Las fuentes confirman que la primera condición verdadera determina el resultado y que ELSE es opcional.

Comprueba si puedes explicarlo

Si ninguna condición WHEN es verdadera y no escribes ELSE, ¿qué devuelve CASE?

Ver respuesta razonada

Devuelve NULL. Si una condición es desconocida, continúa con la siguiente. Para categorías completas, decide explícitamente qué debe representar ELSE.

Responde antes de abrir la explicación. Si necesitaste ayuda, cierra la respuesta y vuelve a explicarlo con tus palabras antes de dar la lección por aprendida.

Qué debes recordar

  • CASE devuelve el resultado del primer WHEN verdadero.
  • Ordena las condiciones de la más específica a la más general.
  • Sin ELSE, las filas no cubiertas producen NULL.

A continuación: Continúa con Transforma textos y fechas.

Si ya dominas cómo CASE produce un valor, puedes aplicarlo a prioridades personalizadas dentro de ORDER BY.

Conceptos relacionados