Expresion CASE en SQL Server

Uso de la Expresión CASE en SQL Server

La Expresión CASE SQL  nos retorna un valor cuando se cumple la condición especificada, es decir en el momento que la condición se cumple esta nos va a mostrar el registro correspondiente.

Sintaxis Case when SQL

CASE
    WHEN Condicion1 THEN Resultado1
    WHEN Condicion2 THEN Resultado2
    WHEN CondicionN THEN ResultadoN
    ELSE result
END

Si ninguna condición es verdadera, nos devolverá el valor especificado en la cláusula ELSE.

Dentro de la expresión CASE SQL podemos hacer uno de Operadores de Comparación, Crear expresiones simples, Utilizar cláusulas como ORDER BY, GROUP BY, realizar ejecución de sentencias Update, Insert Into  y Select.


Ejemplo de CASE en SQL 

Vamos a usar la siguiente tabla de productos para realizar nuestros ejemplos de uso de CASE.

Vamos a crear una consulta para ordenar los productos por marca. si el campo marca fuese Null entonces que la consulta nos ordene los registros por presentación, veamos la consulta.

SELECT NombreProducto, Presentacion, Marca
FROM IProductos
ORDER BY
(CASE
    WHEN Marca IS NULL THEN Presentacion
    ELSE Marca
END) 

Veamos la ejecución de la consulta en Management Studio de Sql Server:


La  consulta verifica si la primera condición en este caso "marca" si es válida y procede a ordenar los registros . De haber sido Null la consulta ordenaría los registros por la presentación.

Ahora vamos a utilizar otra tabla llamada compras para realizar otro ejemplo.

De la siguiente tabla vamos a seleccionar las compras según su tipo de compra y además vamos a obtener el monto mínimo y máximo de esa compra, veamos la consulta.

SELECT CASE 
WHEN NetoPagar >= 2000 THEN 'Credito'
WHEN NetoPagar >= 2500 THEN 'Contado'
ELSE 'Credito'
END AS Estado,
MIN(NetoPagar) as MontoMInimo,
MAX(NetoPagar) as MontoMaximo
FROM ICompras
GROUP BY
CASE
 WHEN NetoPagar >= 2000 THEN 'Credito'
WHEN NetoPagar >= 2500 THEN 'Contado'
ELSE 'Credito'
END 

Obtengamos el resultado de la ejecución de la consulta:


En la  consulta ejecutada podemos ver que tenemos una cláusula Group By con la cual obtenemos los registros requeridos . al  cumplirse la condición podemos ver agrupado los registros de de la compra.

Como hacíamos mención al inicio también podemos usar CASE  en SENTENCIAS DML. Veamos un ejemplo actualicemos las marcas de productos que que tenga por nombre "Roma" y "Helpeck" Actualicemos por "Ina" y "Numar", veamos la consulta.

UPDATE IProductos 
SET Marca  = CASE Marca
 WHEN 'Roma' THEN 'Ina' 
 WHEN 'Helpeck' THEN 'Numar' 
  ELSE  'AG' 
 END 

Veamos el resultado de la ejecución de la consulta y comparemos los registros antes de la actualización:


Hemos procedido a actualizar los registros veamos y comparemos la tabla con las actualizaciones aplicadas.

Como hemos visto los registros ha sido actualizados según la condición que hemos declarado en la expresión CASE.

En esta sección hemos aprendido el uso de la expresión CASE la cual nos brinda mucha flexibilidad al obtener registros de una tabla. 


Publicar un comentario

0 Comentarios