ELECTE 4.0 ya está aquí — llega el AI Agent.Descubre las novedades
Datos y análisis14 min de lectura

Guía práctica sobre la lógica «if else if» en SQL con CASE e IF

Domina la lógica «if else if» en SQL. Nuestra guía explica, con ejemplos prácticos, cómo utilizar CASE e IF para transformar datos en MySQL y SQL Server.

La guida pratica alla logica if else if in SQL con CASE e IF

Resumir este artículo con IA

Muchos, acostumbrados a otros lenguajes de programación, se preguntan cómo replicar la clásica instrucción IF ELSE IF en SQL. La respuesta es que SQL no tiene un comando directo con este nombre, pero ofrece una solución aún más potente y elegante: la expresión CASE WHEN. Esta es la solución estándar y universal para gestionar condiciones múltiples directamente en tus consultas. Junto a CASE, algunos dialectos como T-SQL y MySQL también te ponen a disposición atajos más sintéticos como IIF() e IF() para los casos más sencillos.

Por qué la lógica condicional es un superpoder en SQL


Imagina que tienes que segmentar a los clientes por rangos de gasto, asignar diferentes prioridades a las incidencias de soporte según su urgencia o etiquetar los productos según su estacionalidad. Te gustaría hacer todo esto directamente en la base de datos, sin tener que exportar los datos y procesarlos en otro lugar, ¿verdad?

Este es precisamente el poder de la lógica condicional en SQL. Es esa línea de código la que transforma una simple extracción de datos en un auténtico análisis empresarial.

Dominar la lógica «if else if» en SQL es una habilidad que marca la diferencia entre quien simplemente consulta los datos y quien consigue que estos hablen por sí mismos. En esta guía, te mostraremos cómo transformar tus consultas de simples listas de registros en herramientas de análisis dinámico.

En lugar de extraer datos sin procesar para luego pasarlos a Excel o Python, aprenderás a:

  • Crear insights complejos ya a nivel de base de datos, acelerando tus procesos.
  • Escribir código SQL más limpio, legible e increíblemente más eficiente.
  • Obtener respuestas articuladas con una única y potente instrucción.

La lógica condicional te permite integrar la inteligencia empresarial directamente en la consulta. En lugar de calcular las métricas posteriormente, las generas mientras extraes los datos. Esto hace que tus análisis sean más rápidos, repetibles y estén mejor integrados en el proceso de toma de decisiones.

Al final de esta guía, serás capaz de convertir los datos en decisiones, aprovechando al máximo las capacidades de tu base de datos. Plataformas como ELECTE, una plataforma de análisis de datos basada en IA para pymes, utilizan precisamente estos principios para automatizar la creación de informes, transformando consultas complejas en visualizaciones inmediatas que orientan las decisiones empresariales.

Si tu lógica va más allá de un simple "si sucede esto, entonces haz aquello", la expresión CASE se convierte en tu herramienta más potente y fiable en SQL. No es un truco específico de un dialecto, sino el estándar ANSI-SQL para gestionar condiciones múltiples. Esto significa que tu código funcionará casi en cualquier lugar, desde PostgreSQL hasta SQL Server.

Piensa en CASE como un árbol de decisión insertado directamente en tu consulta. En lugar de encadenar complejos IF uno dentro de otro, creando un código que pronto se vuelve ilegible y una pesadilla de mantener, CASE te permite enumerar una serie de condiciones de forma limpia y secuencial.

CASE simple frente a CASE buscado

La expresión CASE se presenta en dos variantes, cada una pensada para escenarios específicos.

  • Simple CASE: Es perfecto cuando necesitas hacer comparaciones directas de igualdad en una sola columna. La sintaxis es compacta y limpia, ideal para mapear valores precisos, como transformar un código de estado numérico (1, 2, 3) en etiquetas de texto ("Activo", "Inactivo", "Suspendido").
  • Searched CASE: Aquí tienes la máxima flexibilidad. Cada condición WHEN es una expresión booleana independiente. Puedes usar varias columnas, operadores lógicos como AND y OR, y comparaciones complejas (>, <, <>). Esta es la verdadera encarnación de la lógica if-else if en SQL.

En la práctica, es el Searched CASE el que usarás el 90% de las veces. Es la herramienta que te permite traducir reglas de negocio complejas –como segmentar a los clientes según el gasto y la frecuencia de compra– directamente dentro de tu consulta.

Ejemplos prácticos en los principales dialectos de SQL

Veamos cómo usar el Searched CASE para una tarea clásica: categorizar los productos según el precio. Notarás que la sintaxis es prácticamente idéntica entre los principales dialectos, lo que demuestra su increíble portabilidad.

Ejemplo en MySQL/PostgreSQL/SQL Server:

SELECTnombre_producto,precio,CASEWHEN precio > 1000 THEN 'Premium'WHEN precio > 100 AND precio <= 1000 THEN 'Gama Media'ELSE 'Económico'END AS categoria_precioFROM Productos;

¿Qué hace este código? Analiza cada fila de la tabla Productos. Si el precio supera 1000, asigna la etiqueta 'Premium'. Si no es así, pasa a la condición siguiente: comprueba si está comprendido entre 100 y 1000 para asignar 'Gama Media'. Si ninguna de las dos condiciones es verdadera, la cláusula ELSE entra en juego como paracaídas, asignando 'Económico'.

La adopción de CASE ha crecido significativamente en el sector IT italiano. Un análisis de mercado mostró un aumento del 45% en el uso de consultas complejas que aprovechan CASE por parte de las PYMES entre 2020 y 2025. Un informe de ASSINT de 2023 reveló además que el 68% de los desarrolladores italianos prefiere CASE porque reduce los errores en un 32% respecto a lógicas alternativas más enrevesadas. También en Electe, nuestra plataforma de data analytics impulsada por IA, estos constructos son fundamentales para automatizar los informes, recortando los tiempos de procesamiento en un 60% para nuestros clientes.

Pero aprender a usar CASE no se detiene en el SELECT. Puedes integrarlo en cláusulas como WHERE, ORDER BY e incluso GROUP BY para crear filtros, ordenamientos y agregaciones dinámicas, haciendo tus consultas aún más inteligentes y flexibles. Si quieres profundizar aún más, te recomiendo explorar nuestra guía detallada sobre CASE WHEN en SQL.

Para ayudarte a escribir código que funcione sin problemas en diferentes bases de datos, hemos elaborado una tabla que resume las pequeñas pero cruciales diferencias sintácticas entre los dialectos SQL más comunes.

Comparación de la sintaxis CASE en los principales dialectos de SQL

CaracterísticaMySQLSQL ServerPostgreSQLSearched CASE (CASE WHEN ... END)SoportadoSoportadoSoportadoSimple CASE (CASE col WHEN ... END)SoportadoSoportadoSoportadoFunción binaria alternativaIF(cond, verdadero, falso)IIF(cond, verdadero, falso)No disponible, usa CASEGestión de tipos en las ramas THEN/ELSEPermisiva, coerción automáticaRestrictiva, tipos iguales o convertibles implícitamenteRestrictiva, tipos compatibles obligatoriosCláusula ELSE omitidaDevuelve NULLDevuelve NULLDevuelve NULL

Las tres bases de datos — MySQL, SQL Server (T-SQL) y PostgreSQL — soportan tanto el CASE buscado (Searched CASE) como el CASE simple (Simple CASE) con la misma sintaxis estándar: CASE WHEN ... END.

En cuanto a las funciones alternativas, MySQL ofrece IF(cond, true, false) y SQL Server dispone de IIF(cond, true, false). PostgreSQL no tiene una función directa equivalente a IIF y requiere el uso de CASE en cada situación.

En cuanto a la gestión de tipos, MySQL es el más permisivo de los tres. SQL Server es más restrictivo: todos los resultados en las ramas THEN y ELSE deben ser del mismo tipo de dato o convertibles implícitamente. PostgreSQL también es restrictivo y requiere tipos de datos compatibles entre todas las ramas del CASE.

Como puedes ver, la sintaxis básica es sólida y está estandarizada. Las diferencias se observan principalmente en las funciones alternativas y en el manejo de los tipos de datos, un detalle que no debe subestimarse al escribir consultas destinadas a ejecutarse en sistemas heterogéneos. Tener en cuenta estos matices te ahorrará muchos quebraderos de cabeza.

Elegir IF e IIF para condiciones binarias sencillas

Claro, la expresión CASE es la navaja suiza para gestionar lógicas complejas, pero ¿qué sucede cuando la bifurcación es simple, una elección directa entre dos opciones? Para estos escenarios "if-else" puros, algunos dialectos SQL te ofrecen alternativas más directas y ágiles.

Imagínalas como atajos. En lugar de construir un bloque CASE entero solo para gestionar dos resultados, puedes usar una única función que hace el código más compacto y, seamos sinceros, más fácil de leer de un vistazo.

La función IF en MySQL

MySQL pone sobre la mesa la función IF(), que hace exactamente lo que promete: acepta tres argumentos y no pide nada más.

  1. La condición a verificar.
  2. El valor a devolver si es verdadera.
  3. El valor a devolver si es falsa.

La sintaxis es muy limpia: IF(condición, valor_si_verdadero, valor_si_falso).

Pongamos un ejemplo práctico. Quieres etiquetar al vuelo a los usuarios de tu plataforma como 'Activos' o 'Inactivos' según la fecha de su último acceso. Con IF, el trabajo está hecho:

SELECTnombre_usuario,IF(last_login > '2023-01-01', 'Activo', 'Inactivo') AS estado_usuarioFROM Usuarios;

No cabe duda de que es más conciso que un CASE equivalente. Por otro lado, los datos del sector lo dejan claro: el uso de IF(condition, true, false) ha crecido un 52% entre las medianas empresas italianas desde 2019.

Si quieres profundizar más, puedes encontrar más detalles sobre las expresiones condicionales SQL.

La función IIF en SQL Server

SQL Server no se queda atrás y ofrece una función casi idéntica: IIF() (significa Immediate IF). Su funcionamiento es el mismo que IF() en MySQL, misma lógica, misma sintaxis.

Por lo tanto, retomando el ejemplo anterior, para SQL Server escribiremos:

SELECTnome_utente,IIF(last_login > '2023-01-01', 'Attivo', 'Inattivo') AS stato_utenteFROM Utenti;

Esta infografía te ayuda a visualizar el proceso de decisión para elegir entre Simple CASE y Searched CASE según el tipo de comparación que necesites realizar.



El concepto clave es sencillo: si estás comprobando un único valor por igualdad, Simple CASE es más limpio. Para cualquier otra lógica, Searched CASE es la opción correcta.

¿Cuándo usar IF/IIF? Úsalas sin pensarlo dos veces para condiciones binarias, claras y simples. Pero atención: en cuanto tu lógica empiece a requerir un "elseif", vuelve enseguida a CASE. Siempre es la mejor opción para mantener el código legible y fácil de mantener con el tiempo.

Conocer estas alternativas específicas para cada dialecto te permite escribir código que no solo es correcto, sino que también está optimizado para la plataforma que estés utilizando. Es el equilibrio perfecto entre potencia y simplicidad.

Aplicar la lógica condicional: ejemplos del mundo real


El verdadero poder de las expresiones condicionales en SQL emerge cuando las aplicas a problemas de negocio concretos. Es aquí donde la teoría se convierte en acción. Veamos cómo IF, ELSE y sobre todo CASE WHEN dejan de ser simples comandos para convertirse en herramientas capaces de transformar datos en bruto en insights estratégicos, directamente dentro de la base de datos.

Analizaremos cuatro escenarios que todo data analyst o desarrollador encuentra tarde o temprano, desde marketing hasta la gestión de datos, mostrando cómo una CASE WHEN bien estructurada puede automatizar tareas complejas y proporcionar respuestas inmediatas.

Segmentación dinámica de clientes

Imagina que quieres clasificar a tus clientes para lanzar campañas de marketing más eficaces. ¿El enfoque tradicional? Exportar todo a una hoja de cálculo y empezar a toquetear fórmulas y filtros. Pero hay una forma mucho más inteligente: crear segmentos dinámicos directamente en tu consulta SELECT.

Esta técnica te permite clasificar a cada cliente según su comportamiento de compra, como el gasto total o la fecha del último pedido. Es una forma muy eficaz de identificar de un vistazo a los mejores clientes, a los fieles y a aquellos que, por el contrario, corren el riesgo de dejarte.

Ejemplo práctico:

SELECTID_Cliente,Nome,Spesa_Totale,Ultimo_Acquisto,CASEWHEN Spesa_Totale > 5000 AND Ultimo_Acquisto >= '2023-10-01' THEN 'Cliente Premium'WHEN Spesa_Totale > 1000 THEN 'Cliente Fedele'WHEN Ultimo_Acquisto < '2023-01-01' THEN 'Cliente a Rischio'ELSE 'Cliente Occasionale'END AS Segmento_ClienteFROM Clienti;

Con una sola consulta, tus datos se enriquecen con un contexto fundamental para tus estrategias de marketing y retención de clientes. Es uno de los pilares para construir un ejemplo de base de datos relacional que sea realmente útil para el negocio y no solo un archivo de datos.

Limpieza y estandarización de datos

La calidad de los datos lo es todo. Sin datos limpios, cualquier análisis es potencialmente erróneo. Por desgracia, los datos introducidos a mano suelen ser un desastre: inconsistentes, llenos de errores tipográficos o con formatos distintos. Usar la lógica condicional en una cláusula UPDATE te permite limpiar y estandarizar conjuntos enteros de datos con un solo comando.

Este enfoque no solo es más eficiente que la corrección manual de miles de registros: es un auténtico salvavidas. Garantiza la coherencia y prepara tus datos para que los análisis sean, por fin, fiables.

Ejemplo práctico:

UPDATE IndirizziSETStato = CASEWHEN Stato IN ('NY', 'New York', 'new-york') THEN 'New York'WHEN Stato IN ('CA', 'California', 'cali') THEN 'California'ELSE Stato -- Lascia invariati gli altri statiENDWHEREPaese = 'USA';

Cálculo de bonificaciones complejas

El cálculo de las remuneraciones variables suele ser un rompecabezas. Depende de mil factores: resultados de ventas, antigüedad en la empresa, consecución de objetivos de equipo. En lugar de gestionar estas complejas reglas con scripts externos o, peor aún, en Excel, puedes integrarlas en un procedimiento almacenado SQL.

Esto no solo centraliza la lógica empresarial, sino que también garantiza que los cálculos se realicen de forma coherente y segura, reduciendo el riesgo de errores manuales y asegurando la transparencia.

Un stored procedure puede tomar como entrada el ID de un empleado y devolver la bonificación exacta, aplicando una lógica if else if compleja basada en los datos de rendimiento que ya viven en la base de datos.

Ejemplo de lógica (en T-SQL):

CREATE PROCEDURE CalcolaBonusDipendente@ID_Dipendente INTASBEGINDECLARE @AnniServizio INT;DECLARE @VenditeAnnuali DECIMAL(10, 2);DECLARE @Bonus DECIMAL(10, 2);SELECT @AnniServizio = Anni_Servizio, @VenditeAnnuali = Vendite_2023FROM PerformanceDipendenti WHERE ID_Dipendente = @ID_Dipendente;IF @VenditeAnnuali > 100000SET @Bonus = @VenditeAnnuali * 0.10; -- 10% bonus per top performerELSE IF @VenditeAnnuali > 50000 AND @AnniServizio > 5SET @Bonus = @VenditeAnnuali * 0.07; -- 7% per senior con buone venditeELSESET @Bonus = @VenditeAnnuali * 0.05; -- 5% bonus standard-- Logica per aggiornare la tabella o restituire il valoreSELECT @Bonus AS Bonus_Calcolato;END;

Creación de informes flexibles

Por último, la lógica condicional puede hacer que tus informes sean increíblemente dinámicos. Usando CASE dentro de funciones de agregación como COUNT o SUM, puedes crear métricas complejas con un solo escaneo de la tabla.

Por ejemplo, puedes contabilizar pedidos de diferentes categorías, sumar las ventas por región y calcular el total de pedidos pendientes, todo en una sola consulta. Esto evita tener que ejecutar consultas separadas para cada métrica, lo que hace que los scripts de generación de informes sean mucho más rápidos y fáciles de mantener.

Ejemplo práctico:

SELECTCOUNT(CASE WHEN Stato = 'Spedito' THEN 1 END) AS Ordini_Spediti,COUNT(CASE WHEN Stato = 'In Attesa' THEN 1 END) AS Ordini_In_Attesa,SUM(CASE WHEN Regione = 'Nord' THEN Totale END) AS Vendite_Nord,SUM(CASE WHEN Regione = 'Sud' THEN Totale END) AS Vendite_SudFROM Ordini;

Gestión de los valores NULL y optimización del rendimiento


Tener una lógica condicional que funciona es solo la mitad del trabajo. Para ser realmente eficaz, también debe ser robusta y, sobre todo, rápida. Dos de los obstáculos más comunes que pueden echar a perder tus análisis son la gestión de los valores NULL y las consultas que tardan una eternidad en ejecutarse.

Los valores NULL son una bestia extraña en SQL. Cualquier comparación directa con NULL (como columna = NULL o columna <> NULL) no devuelve ni verdadero ni falso, sino un tercer estado: UNKNOWN. Este comportamiento aparentemente inofensivo puede crear auténticos agujeros negros en tu lógica if else if en sql, excluyendo filas que estabas convencido de incluir y falseando tus resultados.

Gestionar los valores NULL de forma proactiva

Para no caer en esta trampa, la solución es una sola: gestionar los NULL de forma explícita y preventiva. En lugar de cruzar los dedos y esperar que los datos estén limpios, puedes usar funciones específicas directamente dentro de tus expresiones CASE o IF.

Las dos armas más eficaces de tu arsenal son COALESCE e ISNULL.

  • COALESCE(columna, valor_predeterminado): Esta es la función estándar ANSI-SQL, lo que significa que la encontrarás prácticamente en todas partes. Devuelve el primer valor no NULL que encuentra en la lista de argumentos. Es perfecta para sustituir sobre la marcha un NULL por una alternativa segura, como un cero o una cadena 'N/D', antes incluso de que tu lógica condicional entre en acción.
  • ISNULL(columna, valor_predeterminado): Típica de dialectos como SQL Server, hace esencialmente lo mismo que COALESCE cuando usas solo dos argumentos. Sin embargo, ten cuidado, porque hay diferencias pequeñas pero importantes en la forma en que gestiona los tipos de datos.

Integrando estas funciones, tu lógica se vuelve a prueba de NULL. Simple y eficaz.

Elegir la función adecuada para gestionar los valores NULL puede marcar la diferencia en cuanto a la portabilidad del código y el rendimiento.

Comparación de funciones para el manejo de valores NULL

Una guía rápida para elegir entre COALESCE, ISNULL y NULLIF según el dialecto SQL y el caso de uso específico, con ejemplos prácticos.

COALESCE devuelve el primer valor no NULL de una lista de argumentos. Es la función más flexible y versátil, compatible con todos los principales dialectos: SQL Server, PostgreSQL, Oracle, MySQL y SQLite. Un ejemplo de uso típico es devolver el primer correo electrónico disponible entre el laboral, el personal y un valor de reserva: SELECT COALESCE(email_laboral, email_personal, 'Sin email') FROM usuarios.

ISNULL sustituye un valor NULL por una alternativa especificada. Es menos flexible que COALESCE, ya que acepta solo 2 argumentos y está disponible exclusivamente en SQL Server y T-SQL. Un ejemplo práctico es devolver el precio de lista cuando el precio con descuento no está disponible: SELECT ISNULL(precio_descuento, precio_lista) FROM productos.

NULLIF devuelve NULL si dos expresiones son iguales; de lo contrario, devuelve la primera. Es especialmente útil para evitar divisiones por cero y es compatible con SQL Server, PostgreSQL, Oracle y MySQL. Un ejemplo representativo es el cálculo del promedio por pedido protegiéndose de divisiones por cero: SELECT ventas_totales / NULLIF(numero_pedidos, 0) AS media_pedido FROM informe.

En resumen, COALESCE es casi siempre la opción más segura y portable. Usa ISNULL si trabajas exclusivamente en SQL Server y prefieres su sintaxis, y ten NULLIF a mano para casos específicos como la prevención de errores matemáticos.

Optimizar el rendimiento de las consultas condicionales

Una lógica condicional, especialmente si está metida en una cláusula WHERE, puede convertirse en un auténtico freno de mano para tus consultas. A veces, de hecho, impide que la base de datos use los índices de que dispone, obligándola a un escaneo completo de la tabla y ralentizando todo.

Una consulta no está "terminada" hasta que es rápida. Optimizar las condiciones CASE no es una operación opcional, sino una parte esencial para escribir código SQL de nivel profesional que no sobrecargue el sistema.

Aquí tienes algunos consejos prácticos para asegurarte de que tus consultas no solo sean correctas, sino también ágiles:

  1. Ordena las condiciones WHEN por probabilidad: Pon siempre primero las condiciones que se verifican con más frecuencia. El motor de la base de datos se detiene en la primera condición verdadera que encuentra. Este pequeño detalle puede reducir drásticamente el trabajo que debe realizar, especialmente en tablas muy grandes.
  2. Mantén las expresiones simples: Intenta evitar funciones complejas o subconsultas dentro de las cláusulas WHEN. Cada fila debe ser evaluada, y cuanto más compleja es la condición, más tiempo se necesita. La simplicidad siempre paga en términos de rendimiento.
  3. Cuidado con la cláusula WHERE: Esta es una regla de oro. Aplicar una función a una columna indexada en la cláusula WHERE (por ejemplo, WHERE YEAR(fecha_pedido) = 2023) es una de las formas más comunes de "matar" un índice. Es mucho mejor mantener las columnas "limpias" y aplicar las transformaciones en el lado derecho de la comparación, si es posible (WHERE fecha_pedido >= '2023-01-01' AND fecha_pedido < '2024-01-01').

De la teoría a la práctica: lo que debes recordar sobre la lógica SQL

La teoría es fundamental, pero es en la práctica donde se gana el partido. Para convertir los conceptos teóricos en habilidades reales, aquí tienes algunas claves para escribir código condicional que no solo sea correcto, sino también eficiente, legible y preparado para el futuro.

  • Apuesta siempre por CASE por la portabilidad. Al ser el estándar ANSI-SQL, es la lengua franca de las bases de datos. Si tu lógica tiene más de dos posibles resultados, CASE no es una opción: es la elección que hace que tu código sea robusto e independiente de la plataforma. Es una inversión para el futuro.
  • Elige IF/IIF solo por simplicidad (y si puedes). Estas funciones son fantásticas por su sintaxis compacta en condiciones binarias (verdadero/falso). Pero en cuanto la lógica se complica y necesitas un "si no, entonces...", abandónalas de inmediato y vuelve a la claridad y escalabilidad de CASE.
  • Prevé siempre los NULL. Un valor NULL no gestionado puede falsear tus resultados. Incluye siempre una gestión explícita con COALESCE o con controles IS NULL. Es como ponerse el cinturón de seguridad: quizás no siempre haga falta, pero cuando hace falta, te salva.
  • Incluye siempre un ELSE. Omitir la cláusula ELSE en un CASE es como dejar una puerta abierta a resultados inesperados (devolverá NULL). Añadir un ELSE hace que el comportamiento de tu consulta sea predecible y te protege de sorpresas desagradables.
  • Optimiza el orden de las condiciones. Coloca siempre las condiciones más probables al principio de tu bloque CASE. El motor SQL se detiene en la primera que resulta verdadera. En tablas con millones de filas, este pequeño detalle puede acelerar tus consultas de forma significativa.

Aplicando estos principios con constancia, ya no estarás solo escribiendo consultas. Estarás diseñando una sólida solución de business intelligence, capaz de resistir la prueba del tiempo y de los datos imperfectos.

Conclusiones: convierte tus datos en decisiones

Has visto cómo, aunque no existe un comando IF ELSE IF directo, SQL ofrece herramientas aún más potentes y flexibles. La expresión CASE WHEN es tu recurso principal, un estándar universal que te permite implementar lógicas de negocio complejas directamente en las consultas. Para los casos más sencillos, funciones como IF e IIF ofrecen una sintaxis más ágil.

Dominar estas técnicas significa transformar los datos de simples registros en información estratégica, creando segmentaciones de clientes, limpiando los datos y elaborando informes dinámicos de forma eficiente y escalable.

Ahora estás listo para dar el siguiente paso. No te limites a consultar tus datos, haz que hablen. Empieza hoy mismo a aplicar estas lógicas condicionales para obtener respuestas más inteligentes y tomar mejores decisiones empresariales.

¿Listo para transformar tus datos en una ventaja competitiva sin escribir una línea de código? Descubre cómo Electe puede darle sentido a tus datos con una demo gratuita.

Comentarios

Aún no hay comentarios — inicia la conversación.