SQL / DQL: La Anatomía del CASE WHEN
La sentencia CASE WHEN es el equivalente al “Si condicional” (if-then-else) de los lenguajes de programación, pero integrado directamente en las consultas SQL. En Bases de Datos Avanzadas, se usa para crear nuevas clasificaciones de datos “al vuelo” sin alterar las tablas originales.
La estructura es lógica y secuencial:
CASE
WHEN condición1 THEN 'Resultado A'
WHEN condición2 THEN 'Resultado B'
ELSE 'Resultado por defecto'
END
Ejemplo: Clasificación de Tickets de Venta
Para este ejemplo se considera el siguiente modelo relacional:

Vamos a calcular el total de cada venta (Precio × Cantidad – Descuento) y, según ese valor, le asignaremos una categoría de importancia para el negocio.
SELECT
v.id_venta,
UPPER(TRIM(v.cliente_nombre)) AS cliente,
p.nombre AS producto,
-- Primero calculamos el total neto para que sea visible
ROUND((v.cantidad * p.precio_unitario) * (1 - v.descuento_porcentaje/100), 2) AS monto_final,
-- Aplicamos la lógica de negocio con CASE
CASE
WHEN (v.cantidad * p.precio_unitario) * (1 - v.descuento_porcentaje/100) > 1000 THEN '⭐ Venta Premium'
WHEN (v.cantidad * p.precio_unitario) * (1 - v.descuento_porcentaje/100) BETWEEN 200 AND 1000 THEN '💰 Venta Estándar'
ELSE '🛒 Venta Económica'
END AS segmentacion_venta
FROM ventas v
JOIN productos p ON v.id_producto = p.id_producto
ORDER BY monto_final DESC
LIMIT 20; -- Solo vemos las primeras 20 para analizar