Ein CASE-Ausdruck mit MIN / MAX hat folgende Syntax:
case_ausdruck ::= { MIN | MAX }(
ausdruck1,ausdruck2, ...,
ausdruckn )
ausdruck
Ausdruck, dessen Auswertung einen alphanumerischen Wert, einen National-Wert, einen numerischen Wert oder einen Zeitwert ergibt.
Es darf kein multipler Wert mit Dimension > 1 sein.
Die Werte von ausdruck1,ausdruck2,...,ausdruckn müssen verträgliche Datentypen haben (siehe Abschnitt „Verträglichkeit von Datentypen").
Ergebnis
Das Ergebnis des CASE-Ausdrucks ist der NULL-Wert, wenn wenigstens einer der in der Klammer enthaltenen Ausdrücke (ausdruck1,ausdruck2,...,ausdruckn) den NULL-Wert ergibt.
Ergibt kein ausdruck den NULL-Wert, so ist das Ergebnis des CASE-Ausdrucks bei Angabe von MIN der Wert des kleinsten ausdruck, bei Angabe von MAX der Wert des größten ausdruck.
Der CASE-Ausdruck MIN(ausdruck1,ausdruck2)
entspricht einem CASE-Ausdruck mit Suchbedingung der folgenden Form:
CASE WHEN ausdruck1 <= ausdruck2 THEN ausdruck1 ELSE ausdruck2 END
Der CASE-Ausdruck MIN(ausdruck1,ausdruck2,...,ausdruckn)
entspricht dem CASE-Ausdruck MIN(MIN(ausdruck1,ausdruck2,...),ausdruckn)
.
Der CASE-Ausdruck MAX(ausdruck1,ausdruck2)
entspricht einem CASE-Ausdruck mit Suchbedingung der folgenden Form:
CASE WHEN ausdruck1 >= ausdruck2 THEN ausdruck1 ELSE ausdruck2 END
Der CASE-Ausdruck MAX(ausdruck1,ausdruck2,...,ausdruckn)
entspricht dem CASE-Ausdruck: MAX(MAX(ausdruck1,ausdruck2,...),ausdruckn)
.
Beispiel
Folgendes Beispiel wählt alle Einträge der Tabelle umsatz
seit dem mit der Benutzervariablen input_datum
eingegebenen Datum, aber höchstens für die letzten 90 Tage.
SELECT * FROM umsatz WHERE umsatz.datum >= MAX(:input_datum,
DATE_OF_JULIAN_DAY(JULIAN_DAY_OF_DATE(CURRENT_DATE)-90))