Verwenden von CASE

Der CASE-Ausdruck wird verwendet, um mehrere Bedingungen auszuwerten und einen einzelnen Wert für jede Bedingung zurückzugeben. Zum Beispiel kann damit ein alternativer Wert angezeigt werden, der vom Wert einer Spalte abhängt. 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, die den zurückgegebenen Ausdruck definiert, wenn kein Vergleichsvorgang 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 AdventureWorks2008R2;
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. In der nachfolgenden Abfrage wird die CASE-Funktion verwendet, um Preise zu kategorisieren.

USE AdventureWorks2008R2;
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).