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).
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.
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?
Podrías intentar utilizar la expresión CASE para las validaciones y dale revisa los group by para las sumatorias.