Eu acho que isso pode ser útil para você.
Usando uma SELECT
declaração com um simplesCASE
expressão
Dentro de uma SELECT
declaração, uma CASE
expressão simples permite apenas uma verificação de igualdade; nenhuma outra comparação é feita. O exemplo a seguir usa a CASE
expressã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 SELECT
instrução com uma CASE
expressão pesquisada
Dentro de uma SELECT
instrução, a CASE
expressã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 CASE
em uma ORDER BY
cláusula
Os exemplos a seguir usam a CASE
expressão em uma ORDER BY
clá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 CASE
em uma UPDATE
declaração
O exemplo a seguir usa a CASE
expressão em uma UPDATE
instruçã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 OUTPUT
clá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 CASE
em uma HAVING
cláusula
O exemplo a seguir usa a CASE
expressão em uma HAVING
cláusula para restringir as linhas retornadas pela SELECT
instrução A instrução retorna a taxa horária máxima para cada cargo na tabela HumanResources.Employee. A HAVING
clá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.