====== Oracle SQL und PL/SQL - der SQL CASE Ausdruck ====== **ab Oracle 8i:**\\ === Searched case expression === Aufbau: CASE WHEN {test} THEN {code} [WHEN {test}] [THEN...] [ELSE...] END 1. Beispiel: select .... , ( case when ampel = 'grün' then 'green' when ampel = 'rot' then 'red' else 'yellow' end ) as ampel from ...... === simple case expression=== **ab Oracle 9i:**\\ Aufbau: CASE {value oder expression} WHEN {match = True} THEN {code} [WHEN...] [THEN...] [ELSE...] => immer null wenn nicht definiert und kein When Zweig getroffen \\ END 2. Beispiel select .... , ( case ampel when 'grün' then 'green' when 'rot' then 'red' else 'yellow' end ) as ampel from ...... ===== Case als Prädikat einer where Bedingung ===== select status from ampeln where ( case ampel when 'grün' then 1 when 'rot' then 0 else 1 end ) = 1 findet alle bis auf die gelben Ampeln ===== Case im Order by zum Sortiern von Daten durch Cluster Bildung ===== Da in der Test Bedingung auch komplexes Vergleiche möglich sind, können so Daten in Cluster zerlegt werden. Einfaches Beispiel: select * from ampeln order by ( case ampel when 'grün' then 1 when 'rot' then 2 else 3 end ) ===== ORA-06592: CASE not found while executing CASE statement ===== Immer darauf achten das auch wirklich jeder Case Abschnitt erreicht werden kann, bzw. immer einen ELSE Zweig in die Logik einbauen! ===== Quellen ===== Oracle 12c - Database PL/SQL Language Reference => https://docs.oracle.com/database/121/LNPLS/case_statement.htm#LNPLS01304