Myślę, że te mogą być pomocne dla Ciebie.
Używanie SELECT
instrukcji z prostym CASE
wyrażeniem
W SELECT
instrukcji proste CASE
wyrażenie pozwala tylko na sprawdzenie równości; nie dokonuje się innych porównań. Poniższy przykład używa CASE
wyraż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 SELECT
instrukcji z wyszukiwanym CASE
wyrażeniem
W SELECT
instrukcji wyszukiwane CASE
wyraż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 CASE
w ORDER BY
klauzuli
W poniższych przykładach użyto CASE
wyrażenia w ORDER BY
klauzuli, 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 CASE
w UPDATE
oświadczeniu
Poniższy przykład używa CASE
wyrażenia w UPDATE
instrukcji, 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. OUTPUT
Klauzula 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 CASE
w HAVING
klauzuli
Poniższy przykład używa CASE
wyrażenia w HAVING
klauzuli, aby ograniczyć wiersze zwracane przez SELECT
instrukcję. Oświadczenie zwraca maksymalną stawkę godzinową dla każdego stanowiska w tabeli HumanResources.Employee. HAVING
Klauzula 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.