prog:sql_case_when
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
prog:sql_case_when [2016/02/26 09:55] – [Case im Order by zum Sortiern von Daten durch Cluster Bildung] gpipperr | prog:sql_case_when [2016/07/07 20:26] (aktuell) – gpipperr | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Oracle SQL und PL/SQL - der SQL CASE Ausdruck ====== | ||
+ | **ab Oracle 8i:**\\ | ||
+ | === Searched case expression === | ||
+ | |||
+ | |||
+ | Aufbau: | ||
+ | <code plsql> | ||
+ | CASE | ||
+ | WHEN {test} | ||
+ | THEN {code} | ||
+ | [WHEN {test}] | ||
+ | | ||
+ | | ||
+ | END | ||
+ | </ | ||
+ | |||
+ | 1. Beispiel: | ||
+ | < | ||
+ | select .... | ||
+ | , ( case | ||
+ | | ||
+ | | ||
+ | else ' | ||
+ | | ||
+ | ) as ampel | ||
+ | from ...... | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | === simple case expression=== | ||
+ | **ab Oracle 9i:**\\ | ||
+ | |||
+ | Aufbau: | ||
+ | <code plsql> | ||
+ | CASE {value oder expression} | ||
+ | WHEN {match = True} | ||
+ | THEN {code} | ||
+ | | ||
+ | | ||
+ | | ||
+ | END | ||
+ | </ | ||
+ | |||
+ | 2. Beispiel | ||
+ | |||
+ | <code plsql> | ||
+ | select .... | ||
+ | , ( case ampel | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ) as ampel | ||
+ | from ...... | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Case als Prädikat einer where Bedingung ===== | ||
+ | |||
+ | <code plsql> | ||
+ | select status from ampeln | ||
+ | where ( case ampel | ||
+ | when ' | ||
+ | when ' | ||
+ | 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: | ||
+ | <code plsql> | ||
+ | select * | ||
+ | from ampeln | ||
+ | order by ( case ampel | ||
+ | when ' | ||
+ | when ' | ||
+ | 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:// |
prog/sql_case_when.txt · Zuletzt geändert: 2016/07/07 20:26 von gpipperr