Verwenden von CASE
Mit dem CASE-Ausdruck werden verschiedene Bedingungen ausgewertet und ein einzelner Wert für jede Bedingung zurückgegeben. Zum Beispiel ermöglicht er die Anzeige eines alternativen Werts in Abhängigkeit vom Wert einer Spalte. Diese Änderung der Daten ist temporär, deshalb werden keine dauerhaften Änderungen an den Daten vorgenommen.
Der CASE-Ausdruck setzt sich aus folgenden Bestandteilen zusammen:
- Dem CASE-Schlüsselwort.
- Dem Namen der zu transformierenden Spalte.
- WHEN-Klauseln, die die zu suchenden Ausdrücke angeben, sowie THEN-Klauseln, die die Ausdrücke angeben, durch die sie ersetzt werden sollen.
- Einer optionalen ELSE-Klausel zur Definition des Ausdrucks, der zurückgegeben wird, wenn keine Vergleichsoperation TRUE ergibt.
- Dem END-Schlüsselwort.
- Einer optionalen AS-Klausel, die einen Alias für den CASE-Ausdruck definiert.
Eine häufige Verwendung des CASE-Ausdrucks ist das Ersetzen von Codes oder Abkürzungen durch besser lesbare Werte. Im nachfolgenden Beispiel wird die CASE
-Funktion zur Anzeige von Produktgruppenkategorien verwendet, um diese leichter verständlich zu machen.
USE AdventureWorks;
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
Außerdem kann CASE zum Kategorisieren von Daten verwendet werden. Die folgende Abfrage verwendet die CASE
-Funktion, um Preise zu kategorisieren.
USE AdventureWorks;
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
Weitere Beispiele finden Sie unter CASE (Transact-SQL).
Siehe auch
Andere Ressourcen
CASE (Transact-SQL)
NULLIF (Transact-SQL)
COALESCE (Transact-SQL)