0Pricing
SQL Academy · Lektion

Gesuchtes und einfaches CASE

Zwei Möglichkeiten, CASE zu schreiben

Gesuchtes und einfaches CASE ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Zwei Möglichkeiten, CASE zu schreiben

SQL bietet zwei Varianten des CASE-Ausdrucks: Simple CASE und Searched CASE. Beide geben abhängig von Bedingungen einen Wert zurück, unterscheiden sich aber darin, wie diese Bedingungen formuliert werden.

Am Ende dieser Lektion wissen Sie, wann Sie welche Form verwenden sollten und wie Sie häufige Fehler beim Verwechseln der beiden Formen vermeiden.

Simple CASE – Das Konzept

Ein Simple CASE vergleicht einen Ausdruck mit einer Liste von Werten. Stellen Sie es sich wie eine Nachschlagetabelle vor: Sie wählen links eine Spalte oder einen Wert aus und listen dann auf, welchem Wert dieser Ausdruck in jedem WHEN-Zweig entspricht.

Syntax: CASE expression WHEN value1 THEN result1 WHEN value2 THEN result2 ELSE default END

SELECT
  product_name,
  category_id,
  CASE category_id
    WHEN 1 THEN 'Electronics'
    WHEN 2 THEN 'Clothing'
    WHEN 3 THEN 'Books'
    ELSE 'Other'
  END AS category_name
FROM products;

Simple CASE in der Praxis

Hier steht der CASE-Ausdruck direkt nach dem Schlüsselwort, und die Spalte status wird mithilfe eines Gleichheitsvergleichs mit jedem WHEN-Wert verglichen. Beachten Sie, dass Sie in den WHEN-Zweigen nicht status = schreiben – der Vergleich ist implizit.

SELECT
  order_id,
  status,
  CASE status
    WHEN 'pending'   THEN 'Awaiting payment'
    WHEN 'paid'      THEN 'Payment received'
    WHEN 'shipped'   THEN 'On its way'
    WHEN 'delivered' THEN 'Completed'
    ELSE 'Unknown status'
  END AS status_label
FROM orders;

Searched CASE – Das Konzept

Bei einem Searched CASE steht direkt nach dem Schlüsselwort CASE kein Ausdruck. Stattdessen enthält jeder WHEN-Zweig eine vollständige boolesche Bedingung. Dadurch ist diese Form wesentlich flexibler: Sie können verschiedene Spalten kombinieren, Bereichsprüfungen verwenden oder in jedem WHEN-Zweig Funktionen aufrufen.

Syntax: CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ELSE default END

SELECT
  employee_name,
  salary,
  CASE
    WHEN salary < 30000  THEN 'Entry Level'
    WHEN salary < 60000  THEN 'Mid Level'
    WHEN salary < 100000 THEN 'Senior'
    ELSE 'Executive'
  END AS salary_band
FROM employees;

Searched CASE in der Praxis

Da jeder WHEN-Zweig einen beliebigen booleschen Ausdruck enthalten kann, können Sie mehrere Spalten in einem Zweig kombinieren. Die Datenbank wertet die WHEN-Klauseln von oben nach unten aus und gibt das Ergebnis des ersten Zweigs zurück, der TRUE ist.

SELECT
  product_name,
  stock,
  price,
  CASE
    WHEN stock = 0              THEN 'Out of stock'
    WHEN stock < 10 AND price > 100 THEN 'Low stock — premium item'
    WHEN stock < 10             THEN 'Low stock'
    ELSE 'In stock'
  END AS availability
FROM products;

Der wesentliche strukturelle Unterschied

Die folgende Übersicht zeigt den grundlegenden Unterschied:

Simple CASE – ein Ausdruck nach CASE; jeder WHEN-Zweig prüft auf Gleichheit mit diesem Ausdruck.
Searched CASE – kein Ausdruck nach CASE; jeder WHEN-Zweig ist eine eigenständige boolesche Bedingung.

Da Simple CASE nur Gleichheitsvergleiche durchführt, kann es keine Wertebereiche, NULL-Werte oder Bedingungen über mehrere Spalten verarbeiten. Für alles, was über einen direkten Wertevergleich hinausgeht, verwenden Sie Searched CASE.

-- Simple CASE: equality only
SELECT CASE day_number
         WHEN 1 THEN 'Monday'
         WHEN 2 THEN 'Tuesday'
         ELSE 'Other'
       END AS day_name
FROM schedule;

-- Searched CASE: any condition
SELECT CASE
         WHEN day_number BETWEEN 1 AND 5 THEN 'Weekday'
         WHEN day_number IN (6, 7)        THEN 'Weekend'
       END AS day_type
FROM schedule;

NULL-Verarbeitung – Warum Searched CASE überlegen ist

Ein Simple CASE verwendet intern =, und NULL = NULL ist in SQL niemals TRUE. Daher kann ein Simple CASE eine NULL-Spalte nicht als Treffer erkennen. Mit einem Searched CASE können Sie WHEN column IS NULL THEN ... schreiben, was korrekt funktioniert.

-- Simple CASE: NULL branch never matches
SELECT CASE manager_id
         WHEN NULL THEN 'No manager'   -- this will NEVER fire
         ELSE 'Has manager'
       END
FROM employees;

-- Searched CASE: correct NULL check
SELECT CASE
         WHEN manager_id IS NULL THEN 'No manager'
         ELSE 'Has manager'
       END AS manager_status
FROM employees;

Spalten in Searched CASE kombinieren

Eine große Stärke von Searched CASE ist, dass jeder WHEN-Zweig auf völlig unterschiedliche Spalten verweisen oder Funktionen aufrufen kann. Dadurch können Sie komplexe Geschäftsregeln ausdrücken, die mit Simple CASE überhaupt nicht möglich wären.

SELECT
  customer_name,
  total_orders,
  total_spent,
  CASE
    WHEN total_spent > 10000 AND total_orders > 20 THEN 'VIP'
    WHEN total_spent > 5000                        THEN 'Gold'
    WHEN total_orders > 10                         THEN 'Silver'
    ELSE 'Standard'
  END AS tier
FROM customers;

CASE in ORDER BY verwenden

Beide CASE-Formen können innerhalb von ORDER BY verwendet werden, um eine benutzerdefinierte Sortierreihenfolge zu erstellen, die in den Daten nicht vorhanden ist. Hier ordnet ein Simple CASE Prioritätsbezeichnungen Zahlen zu, sodass die Zeilen in der fachlich festgelegten Prioritätsreihenfolge und nicht alphabetisch sortiert werden.

SELECT ticket_id, subject, priority
FROM support_tickets
ORDER BY
  CASE priority
    WHEN 'critical' THEN 1
    WHEN 'high'     THEN 2
    WHEN 'medium'   THEN 3
    WHEN 'low'      THEN 4
    ELSE 5
  END ASC;

CASE innerhalb von Aggregatfunktionen

Ein Searched CASE innerhalb von SUM oder COUNT ist ein klassisches Muster für bedingte Aggregation – manchmal auch Pivot genannt. Damit können Sie mehrere Kategoriesummen in einem einzigen Scan erzeugen, statt mehrere Abfragen auszuführen.

SELECT
  department,
  COUNT(*) AS total_employees,
  SUM(CASE WHEN gender = 'F' THEN 1 ELSE 0 END) AS female_count,
  SUM(CASE WHEN gender = 'M' THEN 1 ELSE 0 END) AS male_count,
  SUM(CASE WHEN salary > 70000 THEN salary ELSE 0 END) AS high_earner_payroll
FROM employees
GROUP BY department;

Die richtige Form auswählen

Eine praktische Faustregel:

Verwenden Sie Simple CASE, wenn Sie eine einzelne Spalte einer festen Menge bekannter Werte zuordnen – es ist kürzer und leichter zu lesen.
Verwenden Sie Searched CASE für alles andere: Wertebereiche, NULL-Prüfungen, Logik über mehrere Spalten oder Funktionsaufrufe innerhalb von Bedingungen.

Im Zweifel funktioniert Searched CASE immer. Sie können sogar jedes Simple CASE in ein Searched CASE umschreiben – aber nicht umgekehrt.

-- These two queries return identical results

-- Simple CASE (concise for equality)
SELECT CASE region_code
         WHEN 'US' THEN 'United States'
         WHEN 'UK' THEN 'United Kingdom'
         ELSE 'International'
       END AS region_name
FROM sales;

-- Equivalent Searched CASE
SELECT CASE
         WHEN region_code = 'US' THEN 'United States'
         WHEN region_code = 'UK' THEN 'United Kingdom'
         ELSE 'International'
       END AS region_name
FROM sales;

Schnelltest

Testen Sie Ihr Verständnis von Simple und Searched CASE.

Zusammenfassung der Lektion

Das haben Sie in dieser Lektion gelernt:

Simple CASE – Setzen Sie einen Ausdruck nach CASE; jeder WHEN-Zweig prüft, ob dieser Ausdruck einem bestimmten Wert entspricht. Ideal, um eine einzelne Spalte einer festen Liste von Bezeichnungen zuzuordnen.

Searched CASE – kein Ausdruck nach CASE; jeder WHEN-Zweig enthält eine vollständige boolesche Bedingung. Unterstützt Wertebereiche, NULL-Prüfungen, Logik über mehrere Spalten und Funktionsaufrufe.

Beide Formen werten die Zweige von oben nach unten aus und geben das Ergebnis des ersten TRUE-Zweigs zurück. Wenn kein Zweig übereinstimmt und kein ELSE vorhanden ist, lautet das Ergebnis NULL. Für maximale Flexibilität ist Searched CASE immer die sichere Wahl – es kann alles, was Simple CASE kann, und noch mehr.

Häufig gestellte Fragen

Ist die Lektion „Gesuchtes und einfaches CASE“ kostenlos?

Ja — der vollständige Text von „Gesuchtes und einfaches CASE“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Gesuchtes und einfaches CASE“?

Zwei Möglichkeiten, CASE zu schreiben Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um SQL Academy zu starten?

Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Gesuchtes und einfaches CASE“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?

Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Der CASE-Ausdruck
  2. Gesuchtes und einfaches CASE
  3. Daten kategorisieren und beschriften
  4. CASE in ORDER BY und Aggregationen
← Zurück zu SQL Academy