CASE en SQL
La expresión
CASE
en SQL permite lógica condicional
dentro de una consulta: devuelve valores distintos según se cumplan unas reglas u otras (similar a
IF
–
THEN
–
ELSE
en otros lenguajes).
CASE en SQL es una pieza habitual del flujo SQL: consultar, filtrar, agrupar o modificar datos. Cada ejemplo usa tablas de demostración para que puedas experimentar sin riesgo.
Cómo practicar: ejecuta la consulta tal cual, revisa columnas y tipos, luego cambia un filtro o un alias y vuelve a ejecutar.
CASE en SQL es una pieza habitual del flujo SQL: consultar, filtrar, agrupar o modificar datos. Cada ejemplo usa tablas de demostración para que puedas experimentar sin riesgo.
Cómo practicar: ejecuta la consulta tal cual, revisa columnas y tipos, luego cambia un filtro o un alias y vuelve a ejecutar.
SQL evalúa las condiciones en orden
y se detiene en la primera que sea verdadera. Si ninguna coincide, usa
ELSE
(o
NULL
si no hay
ELSE
).
Sintaxis CASE en SQL
La sintaxis indica el orden de argumentos y palabras clave. Copia la plantilla y sustituye nombres de columnas o literales entre comillas simples.
CASE buscado (WHEN condición)
CASE
WHEN condicion1 THEN resultado1
WHEN condicion2 THEN resultado2
ELSE resultado_default
END AS alias_columna
CASE simple (WHEN valor)
CASE columna
WHEN valor1 THEN resultado1
WHEN valor2 THEN resultado2
ELSE resultado_default
END
Ejemplo CASE en SQL
Etiqueta cada cliente según
N_Ventas
:
Nivel Alto / Medio / Bajo
SELECT Nombre_Cliente, N_Ventas,
CASE
WHEN N_Ventas >= 100 THEN 'Alto'
WHEN N_Ventas >= 70 THEN 'Medio'
ELSE 'Bajo'
END AS Nivel
FROM Clientes
ORDER BY N_Ventas DESC;
Resultado: María López → Alto; clientes con 45 ventas → Bajo.
| Nombre_Cliente | N_Ventas | Nivel |
|---|---|---|
| María López | 200 | Alto |
| John Smith | 150 | Alto |
| Ana García | 120 | Alto |
| … 7 filas más | ||
Tabla demo para CASE
Base de datos de demostración: Clientes
Observa qué columnas devuelve la consulta y cómo se nombran con AS. Ese alias es lo que verás en la cuadrícula del editor.
| ID_Cliente | Nombre_Cliente | Ciudad | Pais | N_Ventas |
|---|---|---|---|---|
| 1 | Ana García | Madrid | España | 120 |
| 2 | Luis Pérez | Barcelona | España | 85 |
| 3 | María López | Valencia | España | 200 |
| 4 | Carlos Ruiz | Madrid | España | 45 |
| 5 | Elena Torres | Sevilla | España | 67 |
| 6 | John Smith | London | UK | 150 |
| 7 | Marie Dubois | Paris | Francia | 92 |
| 8 | Hans Müller | Berlin | Alemania | 78 |
| 9 | Luca Rossi | Roma | Italia | 110 |
| 10 | Sofia Anders | Stockholm | Suecia | 55 |
CASE simple (WHEN valor)
Nacional o internacional
SELECT TOP 6 Nombre_Cliente, Pais,
CASE Pais
WHEN 'España' THEN 'Nacional'
ELSE 'Internacional'
END AS Tipo
FROM Clientes
ORDER BY Nombre_Cliente;
CASE en DetallesPedido
Tamaño del pedido por cantidad
SELECT ID_Pedido, ID_Producto, Cantidad,
CASE
WHEN Cantidad >= 3 THEN 'Grande'
WHEN Cantidad = 2 THEN 'Medio'
ELSE 'Pequeño'
END AS Tamanio
FROM DetallesPedido
ORDER BY Cantidad DESC;
Resumen CASE
-
CASEañade columnas calculadas con reglas condicionales. -
Forma buscada:
WHEN condición THEN; forma simple:CASE col WHEN valor. -
Combínalo con
ORDER BY,GROUP BYu otras expresiones. - Siguiente paso: comodines con LIKE .
Cómo practicar en el editor
1. Pulsa Pruébalo tú mismo en un ejemplo.
2. Cambia un filtro, columna o literal.
3. Ejecuta y compara el resultado con la tabla de ejemplo.
Comprueba lo aprendido
Responde 2–3 preguntas sobre esta lección. Verás ✓ en verde si aciertas o ✗ en rojo si fallas.