Eu acho que isso pode ser útil para você.
Usando uma SELECTdeclaração com um simplesCASE expressão
Dentro de uma SELECTdeclaração, uma CASEexpressão simples permite apenas uma verificação de igualdade; nenhuma outra comparação é feita. O exemplo a seguir usa a CASEexpressão para alterar a exibição das categorias de linha de produtos para torná-las mais compreensíveis.
USE AdventureWorks2012;
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
Usando uma SELECTinstrução com uma CASEexpressão pesquisada
Dentro de uma SELECTinstrução, a CASEexpressão pesquisada permite que os valores sejam substituídos no conjunto de resultados com base nos valores de comparação. O exemplo a seguir exibe o preço de tabela como um comentário de texto com base na faixa de preço de um produto.
USE AdventureWorks2012;
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
Usando CASEem uma ORDER BYcláusula
Os exemplos a seguir usam a CASEexpressão em uma ORDER BYcláusula para determinar a ordem de classificação das linhas com base em um determinado valor da coluna. No primeiro exemplo, o valor na coluna SalariedFlag da tabela HumanResources.Employee é avaliado. Os funcionários com SalariedFlag definido como 1 são retornados pelo BusinessEntityID em ordem decrescente. Os funcionários com SalariedFlag definido como 0 são retornados pelo BusinessEntityID em ordem crescente. No segundo exemplo, o conjunto de resultados é ordenado pela coluna TerritoryName quando a coluna CountryRegionName é igual a 'United States' e por CountryRegionName para todas as outras linhas.
SELECT BusinessEntityID, SalariedFlag
FROM HumanResources.Employee
ORDER BY CASE SalariedFlag WHEN 1 THEN BusinessEntityID END DESC
,CASE WHEN SalariedFlag = 0 THEN BusinessEntityID END;
GO
SELECT BusinessEntityID, LastName, TerritoryName, CountryRegionName
FROM Sales.vSalesPerson
WHERE TerritoryName IS NOT NULL
ORDER BY CASE CountryRegionName WHEN 'United States' THEN TerritoryName
ELSE CountryRegionName END;
Usando CASEem uma UPDATEdeclaração
O exemplo a seguir usa a CASEexpressão em uma UPDATEinstrução para determinar o valor definido para a coluna VacationHours para funcionários com SalariedFlag definido como 0. Ao subtrair 10 horas de VacationHours resulta em um valor negativo, VacationHours é aumentado em 40 horas; caso contrário, o VacationHours é aumentado em 20 horas. A OUTPUTcláusula é usada para exibir os valores de férias antes e depois.
USE AdventureWorks2012;
GO
UPDATE HumanResources.Employee
SET VacationHours =
( CASE
WHEN ((VacationHours - 10.00) < 0) THEN VacationHours + 40
ELSE (VacationHours + 20.00)
END
)
OUTPUT Deleted.BusinessEntityID, Deleted.VacationHours AS BeforeValue,
Inserted.VacationHours AS AfterValue
WHERE SalariedFlag = 0;
Usando CASEem uma HAVINGcláusula
O exemplo a seguir usa a CASEexpressão em uma HAVINGcláusula para restringir as linhas retornadas pela SELECTinstrução A instrução retorna a taxa horária máxima para cada cargo na tabela HumanResources.Employee. A HAVINGcláusula restringe os títulos àqueles mantidos por homens com uma taxa de remuneração máxima superior a 40 dólares ou por mulheres com uma taxa de remuneração máxima superior a 42 dólares.
USE AdventureWorks2012;
GO
SELECT JobTitle, MAX(ph1.Rate)AS MaximumRate
FROM HumanResources.Employee AS e
JOIN HumanResources.EmployeePayHistory AS ph1 ON e.BusinessEntityID = ph1.BusinessEntityID
GROUP BY JobTitle
HAVING (MAX(CASE WHEN Gender = 'M'
THEN ph1.Rate
ELSE NULL END) > 40.00
OR MAX(CASE WHEN Gender = 'F'
THEN ph1.Rate
ELSE NULL END) > 42.00)
ORDER BY MaximumRate DESC;
Para uma descrição mais detalhada desses exemplos, visite a fonte .
Visite também aqui e aqui para alguns exemplos com ótimos detalhes.