Usar CASE

La expresión CASE se utiliza para evaluar varias condiciones y devolver un valor único para cada condición. Por ejemplo, permite mostrar un valor alternativo dependiendo del valor de una columna. Este cambio es temporal; no se producen cambios permanentes en los datos.

La expresión CASE está formada por:

  • La palabra clave CASE.

  • El nombre de columna que se va a transformar.

  • Cláusulas WHEN que especifican las expresiones que se van a buscar y cláusulas THEN que especifican las expresiones que las van a reemplazar.

  • Una cláusula ELSE opcional que define la expresión que se devuelve si ninguna operación de comparación se evalúa como TRUE.

  • La palabra clave END.

  • Una cláusula AS opcional que define un alias de la expresión CASE.

Una utilización normal de la expresión CASE es sustituir códigos o abreviaturas por valores más legibles. En el ejemplo siguiente se utiliza la función CASE para cambiar la visualización de las categorías de línea de producto de forma que resulten más comprensibles.

USE AdventureWorks2008R2;
GO
SELECT   ProductNumber, Category =
      CASE ProductLine
         WHEN 'R' THEN 'Road'
         WHEN 'M' THEN 'Mountain'
         WHEN 'T' THEN 'Touring'
         WHEN 'S' THEN 'Other sale items'
         ELSE 'Not for sale'
      END,
   Name
FROM Production.Product
ORDER BY ProductNumber;
GO

CASE también se utiliza para clasificar datos. En la siguiente consulta se utiliza la función CASE para clasificar precios.

USE AdventureWorks2008R2;
GO
SELECT   ProductNumber, Name, 'Price Range' = 
      CASE 
         WHEN ListPrice =  0 THEN 'Mfg item - not for resale'
         WHEN ListPrice < 50 THEN 'Under $50'
         WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
         WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
         ELSE 'Over $1000'
      END
FROM Production.Product
ORDER BY ProductNumber ;
GO

Para obtener más ejemplos, vea CASE (Transact-SQL).