Condicionante IF ELSE en SQL Server

Como en los lenguajes de programación, también podemos encontrar la condicionante IF ELSE en SQL Server el administrador de base de datos.

IF y ELSE funcionan de la misma manera en SQL que en el lenguaje de C# (para los que lo han utilizado en este lenguaje).

Condicionante IF ELSE en SQL Server

Para los ejemplos utilizare la base de datos de NorthWind y puedes encontrarla en este post para SQL Server 2017.

Condición básica

Utilicemos la condicionante IF y ELSE en SQL de forma básica únicamente para especificar que tabla mostrar.

DECLARE @Tabla INT = 1;
IF(@Tabla = 1)
	SELECT * FROM dbo.Products;
ELSE
	SELECT * FROM dbo.Employees;
  • Declaro una variable entera, la utilizaremos en la comparación.
  • Iniciamos con IF, especificamos la condición a cumplir para entrar entre paréntesis, si el if se cumple se muestra la tabla Productos.
  • Else muestra el resultado si la condición anterior no se cumple, en este caso muestro la tabla de empleados.

Podría interesarte Expresión CASE en SQL Server  

Condicionante IF ELSE múltiple

La condicionante IF no solo permite la comparación una vez, es posible realizar una validación tras otras si la anteriores no se cumple.

Utilicemos esta opción que tiene la condicionante IF de la siguiente manera.

DECLARE @Tabla INT = 1;
IF(@Tabla = 1)
	SELECT * FROM dbo.Products;
ELSE IF(@Tabla = 2)
	SELECT * FROM dbo.Employees;
ELSE
	SELECT * FROM dbo.Customers;
  • El único cambio es la agregación de un IF frente a ELSE, para la realizar la validación.

Observaciones

Es recomendable realizar IF múltiples como se mostró anteriormente y no colocar un IF seguido de otro.

DECLARE @Tabla INT = 1;
IF(@Tabla = 1)
	SELECT * FROM dbo.Products;
IF(@Tabla = 2)
	SELECT * FROM dbo.Employees;

¿Por qué?

En estas condicionantes si se cumple o no la primera validación la consulta seguirá en ejecución hasta terminar todos los IF.

Esto aumentara el tiempo de consulta y un bajo rendimiento a toda tu aplicación. En el siguiente video podrás ver la explicación del contenido del post.

2 Comments

  1. Buenas tardes.

    Quisiera realizar una consulta algo asi de la siguiente manera, pero no encuentro la manera:
    materiales = tabla
    gasto= campo de tabla
    total1 = campo de tabla
    total2= campo de tabla

    IF gasto = ‘SI’ THEN
    select SUM(TOTAL1) AS total from materiales
    elseif gasto = ‘NO’ THEN
    select SUM(TOTAL2) AS total from materiales
    END IF

    Podrias ayudarme?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *