Myślę, że te mogą być pomocne dla Ciebie.
Używanie SELECTinstrukcji z prostym CASEwyrażeniem
W SELECTinstrukcji proste CASEwyrażenie pozwala tylko na sprawdzenie równości; nie dokonuje się innych porównań. Poniższy przykład używa CASEwyrażenia, aby zmienić wyświetlanie kategorii linii produktów, aby były bardziej zrozumiałe.
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
Użycie SELECTinstrukcji z wyszukiwanym CASEwyrażeniem
W SELECTinstrukcji wyszukiwane CASEwyrażenie umożliwia zastąpienie wartości w zestawie wyników na podstawie wartości porównawczych. Poniższy przykład wyświetla cenę katalogową jako komentarz tekstowy na podstawie zakresu cen dla produktu.
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
Używanie CASEw ORDER BYklauzuli
W poniższych przykładach użyto CASEwyrażenia w ORDER BYklauzuli, aby określić kolejność sortowania wierszy na podstawie danej wartości kolumny. W pierwszym przykładzie obliczana jest wartość w kolumnie SalariedFlag tabeli HumanResources.Employee. Pracownicy, dla których SalariedFlag ustawiono na 1, są zwracani w kolejności malejącej przez BusinessEntityID. Pracownicy, dla których SalariedFlag jest ustawiona na 0, są zwracani w kolejności rosnącej przez BusinessEntityID. W drugim przykładzie zestaw wyników jest uporządkowany według kolumny TerritoryName, gdy kolumna CountryRegionName jest równa „United States” i według CountryRegionName dla wszystkich pozostałych wierszy.
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;
Używanie CASEw UPDATEoświadczeniu
Poniższy przykład używa CASEwyrażenia w UPDATEinstrukcji, aby określić wartość ustawioną dla kolumny VacationHours dla pracowników z SalariedFlag ustawioną na 0. Gdy odejmowanie 10 godzin od VacationHours daje wartość ujemną, VacationHours jest zwiększana o 40 godzin; w przeciwnym razie Urlop jest wydłużony o 20 godzin. OUTPUTKlauzula jest używany do wyświetlania przed i po wartości wakacje.
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;
Używanie CASEw HAVINGklauzuli
Poniższy przykład używa CASEwyrażenia w HAVINGklauzuli, aby ograniczyć wiersze zwracane przez SELECTinstrukcję. Oświadczenie zwraca maksymalną stawkę godzinową dla każdego stanowiska w tabeli HumanResources.Employee. HAVINGKlauzula ogranicza tytułów do tych, które są utrzymywane przez mężczyzn z maksymalnym większym stopniu wynagrodzenie niż 40 dolarów lub kobiet z maksymalnym większym stopniu wynagrodzenie niż 42 dolarów.
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;
Aby uzyskać więcej szczegółowych informacji na temat tego przykładu, odwiedź źródło .
Odwiedź również tutaj i tutaj, aby uzyskać kilka przykładów ze szczegółami.