La cláusula CASE en SQL Server es una expresión condicional que permite realizar evaluaciones y tomar decisiones basadas en condiciones específicas. Esta cláusula es muy útil cuando se necesita realizar diferentes acciones o asignar diferentes valores según el resultado de una condición.
La sintaxis básica de la cláusula CASE en SQL Server es la siguiente:
«`sql
CASE
WHEN condición1 THEN resultado1
WHEN condición2 THEN resultado2
…
ELSE resultadoN
END
«`
En esta sintaxis, se especifican una o más condiciones utilizando la cláusula WHEN, seguidas del resultado que se desea obtener si la condición es verdadera. La cláusula ELSE se utiliza para especificar el resultado que se desea obtener si ninguna de las condiciones anteriores es verdadera.
Es importante destacar que la cláusula CASE puede ser utilizada tanto en una expresión como en una sentencia SELECT, UPDATE, INSERT o DELETE. A continuación, veremos ejemplos de cómo utilizar la cláusula CASE en cada una de estas sentencias.
Uso de la cláusula CASE en una expresión
En una expresión, la cláusula CASE se utiliza para asignar un valor a una variable o columna en función de una condición. Por ejemplo, supongamos que tenemos una tabla llamada «Empleados» con las columnas «Nombre», «Edad» y «Salario». Queremos asignar una categoría a cada empleado en función de su salario. Podemos utilizar la cláusula CASE de la siguiente manera:
«`sql
SELECT Nombre, Salario,
CASE
WHEN Salario < 1000 THEN 'Baja'
WHEN Salario >= 1000 AND Salario < 2000 THEN 'Media'
ELSE 'Alta'
END AS Categoria
FROM Empleados
```En este ejemplo, utilizamos la cláusula CASE para asignar la categoría "Baja" a los empleados cuyo salario es menor a 1000, la categoría "Media" a los empleados cuyo salario está entre 1000 y 2000, y la categoría "Alta" a los empleados cuyo salario es mayor o igual a 2000. El resultado de esta consulta mostrará el nombre, salario y categoría de cada empleado.
Uso de la cláusula CASE en una sentencia SELECT
En una sentencia SELECT, la cláusula CASE se utiliza para realizar cálculos o transformaciones en los datos seleccionados. Por ejemplo, supongamos que tenemos una tabla llamada «Productos» con las columnas «Nombre», «Precio» y «Descuento». Queremos mostrar el precio final de cada producto, teniendo en cuenta el descuento aplicado. Podemos utilizar la cláusula CASE de la siguiente manera:
«`sql
SELECT Nombre, Precio, Descuento,
CASE
WHEN Descuento IS NULL THEN Precio
ELSE Precio – (Precio * Descuento)
END AS PrecioFinal
FROM Productos
«`
En este ejemplo, utilizamos la cláusula CASE para calcular el precio final de cada producto. Si el descuento es nulo, el precio final será igual al precio original. Si el descuento tiene un valor, restamos al precio original el porcentaje de descuento aplicado. El resultado de esta consulta mostrará el nombre, precio, descuento y precio final de cada producto.
Uso de la cláusula CASE en una sentencia UPDATE
En una sentencia UPDATE, la cláusula CASE se utiliza para actualizar los valores de una columna en función de una condición. Por ejemplo, supongamos que tenemos una tabla llamada «Empleados» con las columnas «Nombre», «Edad» y «Salario». Queremos aumentar el salario de los empleados mayores de 40 años en un 10%. Podemos utilizar la cláusula CASE de la siguiente manera:
«`sql
UPDATE Empleados
SET Salario = CASE
WHEN Edad > 40 THEN Salario * 1.1
ELSE Salario
END
«`
En este ejemplo, utilizamos la cláusula CASE para actualizar el salario de los empleados mayores de 40 años. Si la edad del empleado es mayor a 40, multiplicamos el salario por 1.1 para aumentarlo en un 10%. Si la edad del empleado es menor o igual a 40, el salario se mantiene sin cambios. Esta sentencia UPDATE actualizará el salario de los empleados que cumplan la condición especificada.
Uso de la cláusula CASE en una sentencia INSERT
En una sentencia INSERT, la cláusula CASE se utiliza para insertar diferentes valores en una columna en función de una condición. Por ejemplo, supongamos que tenemos una tabla llamada «Clientes» con las columnas «Nombre», «Edad» y «Tipo». Queremos insertar un nuevo cliente y asignarle un tipo en función de su edad. Podemos utilizar la cláusula CASE de la siguiente manera:
«`sql
INSERT INTO Clientes (Nombre, Edad, Tipo)
VALUES (‘Juan’, 35,
CASE
WHEN Edad < 30 THEN 'Joven'
WHEN Edad >= 30 AND Edad < 60 THEN 'Adulto'
ELSE 'Mayor'
END)
```En este ejemplo, utilizamos la cláusula CASE para insertar un valor en la columna "Tipo" en función de la edad del cliente. Si la edad es menor a 30, el tipo será "Joven". Si la edad está entre 30 y 60, el tipo será "Adulto". Si la edad es mayor o igual a 60, el tipo será "Mayor". Esta sentencia INSERT insertará un nuevo cliente con el nombre "Juan", la edad 35 y el tipo "Adulto".
Uso de la cláusula CASE en una sentencia DELETE
En una sentencia DELETE, la cláusula CASE se utiliza para eliminar filas en función de una condición. Por ejemplo, supongamos que tenemos una tabla llamada «Empleados» con las columnas «Nombre», «Edad» y «Activo». Queremos eliminar los empleados que tienen más de 60 años y no están activos. Podemos utilizar la cláusula CASE de la siguiente manera:
«`sql
DELETE FROM Empleados
WHERE CASE
WHEN Edad > 60 AND Activo = 0 THEN 1
ELSE 0
END = 1
«`
En este ejemplo, utilizamos la cláusula CASE en la cláusula WHERE para especificar la condición de eliminación. Si la edad del empleado es mayor a 60 y no está activo, la cláusula CASE devuelve 1 y la fila se elimina. Si la edad del empleado es menor o igual a 60 o está activo, la cláusula CASE devuelve 0 y la fila no se elimina. Esta sentencia DELETE eliminará los empleados que cumplan la condición especificada.
La cláusula CASE en SQL Server es una herramienta muy útil para realizar evaluaciones y tomar decisiones basadas en condiciones específicas. Puede ser utilizada en una expresión o en una sentencia SELECT, UPDATE, INSERT o DELETE. Con la sintaxis adecuada, la cláusula CASE permite realizar cálculos, transformaciones, actualizaciones o eliminaciones de manera eficiente y flexible.