Oft reichen einfache Abfragen nicht aus. Vielleicht möchtest du Alterswerte nicht einfach nur anzeigen, sondern sie in Gruppen wie „Jung“, „Erwachsen“ oder „Senior“ einteilen. Oder du willst Statuscodes in aussagekräftige Begriffe umwandeln. Genau dafür gibt es das CASE
-Statement: Es erlaubt dir, direkt in der Abfrage eigene Regeln festzulegen und Daten so zu gestalten, wie du sie wirklich brauchst.
Warum ist das so praktisch?
- Logik direkt in der Datenbank: Die Verarbeitung passiert dort, wo die Daten liegen – ohne Umwege über andere Tools.
- Weniger Daten hin- und herschieben: Du erhältst bereits aufbereitete Ergebnisse, statt Rohdaten weiterverarbeiten zu müssen.
- Mächtigere Abfragen: Mit
CASE
kannst du Berichte erstellen, die weit über simples Filtern oder Sortieren hinausgehen.
Das CASE
-Statement macht deine Abfragen also flexibler, aussagekräftiger und spart dir oft viel Zeit bei der Datenanalyse.

Die Syntax: Der Baukasten für deine Bedingungen
Bevor du das CASE
-Statement effektiv einsetzt, ist es hilfreich, die grundlegenden Varianten zu kennen. Es gibt zwei Formen:
Einfaches CASE
Wird verwendet, wenn du eine Spalte auf bestimmte Werte prüfen möchtest. Es funktioniert wie ein simpler Schalter:
SELECT
CASE spalte
WHEN wert1 THEN 'Ergebnis1'
WHEN wert2 THEN 'Ergebnis2'
ELSE 'Anderes Ergebnis'
END AS neue_spalte
FROM tabelle;
Durchsuchtes CASE
Hier kannst du beliebige Bedingungen prüfen, ähnlich wie ein flexibles IF-Statement. Dies ist die häufigere und mächtigere Variante:
SELECT
CASE
WHEN bedingung1 THEN 'Ergebnis1'
WHEN bedingung2 THEN 'Ergebnis2'
ELSE 'Anderes Ergebnis'
END AS neue_spalte
FROM tabelle;
Der ELSE
-Zweig ist besonders wichtig, da er als Fallback dient, wenn keine der Bedingungen zutrifft.
Anwendungsbereich 1: Dynamische Spalten im SELECT
Mit dem CASE
-Statement kannst du Werte bei der Ausgabe direkt umbeschriften oder kategorisieren. So lassen sich deine Abfragen deutlich aussagekräftiger gestalten.
Beispiel 1: Kunden in Alterskategorien einteilen
SELECT name,
CASE
WHEN alter < 30 THEN 'Jung'
WHEN alter BETWEEN 30 AND 59 THEN 'Erwachsen'
ELSE 'Senior'
END AS altersgruppe
FROM kunden;
Beispiel 2: Umsatzklassen bilden
SELECT kunde, umsatz,
CASE
WHEN umsatz < 1000 THEN 'Niedrig'
WHEN umsatz BETWEEN 1000 AND 5000 THEN 'Mittel'
ELSE 'Hoch'
END AS umsatzklasse
FROM bestellungen;
Beispiel 3: Statuscodes in lesbare Beschreibungen übersetzen
SELECT name, statuscode,
CASE statuscode
WHEN 1 THEN 'Aktiv'
WHEN 2 THEN 'Inaktiv'
WHEN 3 THEN 'Gesperrt'
ELSE 'Unbekannt'
END AS status
FROM kunden;
Mit diesen einfachen Anwendungsbeispielen kannst du deine SELECT-Abfragen direkt erweitern, um die Daten sofort verständlicher und aussagekräftiger zu machen.
Anwendungsbereich 2: Komplexe Gruppierungen mit GROUP BY
Oft möchtest du nicht nach den ursprünglichen Werten gruppieren, sondern nach selbst definierten Kategorien. Mit dem CASE
-Statement kannst du eine neue virtuelle Spalte erzeugen, die du anschließend im GROUP BY
verwenden kannst.
Beispiel: Umsatzdaten nach Preisgruppen gruppieren
SELECT
CASE
WHEN preis < 50 THEN 'Billig'
WHEN preis BETWEEN 50 AND 200 THEN 'Standard'
ELSE 'Premium'
END AS preisgruppe,
SUM(umsatz) AS gesamtumsatz
FROM produkte
GROUP BY
CASE
WHEN preis < 50 THEN 'Billig'
WHEN preis BETWEEN 50 AND 200 THEN 'Standard'
ELSE 'Premium'
END;
So kannst du schnell den Gesamtumsatz pro Preisgruppe berechnen, ohne die Originaldaten zu verändern oder zusätzliche Spalten in der Tabelle zu erstellen.
Dieses Prinzip lässt sich auf beliebige Kategorien anwenden – von Kundensegmenten über Regionen bis hin zu beliebigen Messwerten. Das CASE-Statement macht deine Gruppierungen flexibel und aussagekräftig.
Anwendungsbereich 3: Datenbereinigung und -transformation
Mit dem CASE
-Statement kannst du ungültige, falsche oder inkonsistente Werte direkt in der Abfrage korrigieren oder anpassen. So werden deine Abfragen sauberer und aussagekräftiger.
Beispiel 1: Datensätze im WHERE filtern
Du möchtest nur Kunden abfragen, die als „Wertvoll“ eingestuft wurden:
SELECT *
FROM kunden
WHERE CASE
WHEN kundenwert = 'Gold' THEN 1
WHEN kundenwert = 'Silber' THEN 1
ELSE 0
END = 1;
Beispiel 2: Falsche Werte im UPDATE korrigieren
Oft sind Tabellen nicht einheitlich gepflegt. Mit CASE
kannst du die Werte vereinheitlichen:
UPDATE firmen
SET rechtsform = CASE
WHEN rechtsform = 'GMbH' THEN 'GmbH'
WHEN rechtsform = 'Ag' THEN 'AG'
ELSE rechtsform
END;
Hinweis: Teste Änderungen vorher unbedingt mit einem SELECT
, um unbeabsichtigte Updates zu vermeiden.
Auf diese Weise kannst du Daten direkt in der Datenbank transformieren, bevor du sie für Berichte oder Analysen verwendest.
Pro-Tipp: CASE in ORDER BY für benutzerdefinierte Sortierung
Mit CASE
kannst du nicht nur Werte umwandeln, sondern auch die Reihenfolge deiner Abfragen individuell steuern. So lässt sich eine Sortierung realisieren, die über A-Z oder 1-9 hinausgeht.
Beispiel: Produkte nach benutzerdefinierter Kategorie sortieren
SELECT produktname, kategorie
FROM produkte
ORDER BY CASE kategorie
WHEN 'Premium' THEN 1
WHEN 'Standard' THEN 2
WHEN 'Sonderangebot' THEN 3
ELSE 4
END,
produktname;
In diesem Beispiel erscheinen zuerst alle Produkte der Kategorie „Premium“, danach „Standard“ und „Sonderangebot“. Innerhalb jeder Kategorie wird alphabetisch nach Produktname sortiert.
Mit dieser Technik kannst du flexibel jede gewünschte Sortierlogik direkt in SQL abbilden.
Cheat-Sheet: CASE-Statement auf einen Blick
Hier sind die wichtigsten Einsatzmöglichkeiten des CASE
-Statements kompakt zusammengefasst, inklusive praktischer Beispiele:
- SELECT: Werte umbenennen oder kategorisieren
SELECT name, CASE WHEN alter < 30 THEN 'Jung' WHEN alter BETWEEN 30 AND 59 THEN 'Erwachsen' ELSE 'Senior' END AS altersgruppe FROM kunden;
- GROUP BY: Virtuelle Kategorien für Aggregationen erstellen
SELECT CASE WHEN preis < 50 THEN 'Billig' WHEN preis BETWEEN 50 AND 200 THEN 'Standard' ELSE 'Premium' END AS preisgruppe, SUM(umsatz) AS gesamtumsatz FROM produkte GROUP BY CASE WHEN preis < 50 THEN 'Billig' WHEN preis BETWEEN 50 AND 200 THEN 'Standard' ELSE 'Premium' END;
- WHERE: Datensätze nach Bedingungen filtern
SELECT * FROM kunden WHERE CASE WHEN kundenwert = 'Gold' THEN 1 WHEN kundenwert = 'Silber' THEN 1 ELSE 0 END = 1;
- UPDATE: Ungültige oder inkonsistente Werte korrigieren
UPDATE firmen SET rechtsform = CASE WHEN rechtsform = 'GMbH' THEN 'GmbH' WHEN rechtsform = 'Ag' THEN 'AG' ELSE rechtsform END;
- ORDER BY: Benutzerdefinierte Sortierung erzwingen
SELECT produktname, kategorie FROM produkte ORDER BY CASE kategorie WHEN 'Premium' THEN 1 WHEN 'Standard' THEN 2 WHEN 'Sonderangebot' THEN 3 ELSE 4 END, produktname;
Dieses Cheat-Sheet dient als schneller Spickzettel, damit du die Flexibilität des CASE
-Statements jederzeit gezielt nutzen kannst. Hier kannst du das Cheat Sheet runterladen:
CASE Cheat Sheet (PDF)
Fazit: Das CASE-Statement in der Praxis
Das CASE-Statement ist eines der flexibelsten Werkzeuge in SQL. Es ermöglicht dir, Daten direkt in der Abfrage umzuwandeln, zu kategorisieren, zu bereinigen oder individuell zu sortieren.
Mit CASE kannst du:
- Spaltenwerte dynamisch anpassen und aussagekräftiger gestalten.
- Gruppen nach eigenen Kategorien bilden und Aggregationen sinnvoll auswerten.
- Inkonsistente oder fehlerhafte Daten direkt in der Datenbank korrigieren.
- Benutzerdefinierte Sortierungen erstellen, die über die Standard-Reihenfolge hinausgehen.
Für Einsteiger und fortgeschrittene Anfänger bedeutet das: Mehr Kontrolle über deine Abfragen, weniger Nachbearbeitung in externen Tools und deutlich aussagekräftigere Ergebnisse. Wer die Logik von CASE einmal verstanden hat, kann seine SQL-Abfragen wesentlich effizienter und intelligenter gestalten.
Es lohnt sich, das CASE-Statement regelmäßig einzusetzen, zu üben und eigene kleine Beispiele zu erstellen – so wirst du Schritt für Schritt sicherer und flexibler im Umgang mit bedingter Logik in SQL.
Dynamic SQL: Wann es sich lohnt – und wann es gefährlich wird
Dynamic SQL ist ein mächtiges Werkzeug in der Datenbankwelt –...
Artikel lesenGROUP BY richtig verstehen: typische Fehler und wie du sie vermeidest
Die GROUP BY-Klausel gehört zu den mächtigsten Werkzeugen in SQL...
Artikel lesenTypische Anfängerfehler in SQL – und wie du sie vermeidest
SQL ist eine der wichtigsten Sprachen, wenn es darum geht,...
Artikel lesenWas macht ein SQL-Server?
Wenn du online einkaufst, eine App nutzt oder deine Bankgeschäfte...
Artikel lesen