CASE (Searched)

CASE-Anweisungen werten eine oder mehrere Bedingungen aus und geben ein Ergebnis zurück, wenn die erste Bedingung erfüllt ist, oder ein Standardergebnis, wenn keine der Bedingungen erfüllt ist.

Siehe auch: IF.

Verwendungsbeispiel

CASE wird oft dazu verwendet, neue Datenkategorien oder ‑gruppen zu erstellen. Zum Beispiel könnten Sie mit einer CASE-Anweisung ausgewählte Länderwerte in einer Dimension „Verkaufsgebiet“ gruppieren. Das würde dann so aussehen:


    CASE
        WHEN Country IN ("USA","Canada","Mexico") THEN "North America"
        WHEN Country IN ("England","France") THEN "Europe"
        ELSE "Other"
    END

Syntax


    CASE
        WHEN condition THEN result
        [WHEN condition THEN result]
        [...]
        [ELSE else_result]
    END

Parameter

  • condition: ein logisches Feld oder ein logischer Ausdruck. Mit WHEN-Anweisungen wird eine condition ausgewertet. Ist die Bedingung erfüllt, wird „true“ zurückgegeben, sonst „false“.

  • result – ein Feld oder Ausdruck eines beliebigen Typs. Für jede WHEN-Anweisung muss eine übereinstimmende THEN-Anweisung angegeben werden. Sie legt fest, welche Ergebnisse zurückgegeben werden, wenn die WHEN condition-Bedingung erfüllt ist. Bei mehreren WHEN-Anweisungen gibt die CASE-Anweisung das result für die erste erfüllte condition zurück.

  • else_result (optional): ein Feld oder Ausdruck eines beliebigen Typs. Die ELSE else_result Klausel gibt ein Standardergebnis für die CASE Anweisung an. Sie wird zurückgegeben, falls keine der WHEN-Anweisungen erfüllt ist. Wenn eine CASE-Anweisung keine ELSE-Anweisung enthält und keine der WHEN-Anweisungen erfüllt ist, gibt die CASE-Anweisung NULL zurück.

Eine CASE-Anweisung kann nur eine ELSE-Anweisung enthalten.

Funktionsweise von „searched CASE

Eine „searched CASE“-Anweisung beginnt mit dem Begriff CASE und endet mit dem Begriff END. Dazwischen befinden sich die einzelnen Abschnitte oder Anweisungen:

  • WHEN ist eine Bedingung, die ausgewertet werden soll. Eine einzelne CASE-Anweisung kann mehrere WHEN-Anweisungen enthalten.
  • THEN ist das Ergebnis, das zurückgegeben werden soll, wenn die Bedingung der WHEN-Anweisung erfüllt ist. Für jede WHEN-Anweisung in Ihrer CASE-Anweisung muss eine THEN-Anweisung vorhanden sein.
  • ELSE: Optional. Falls keine Bedingung der WHEN-Anweisung erfüllt ist, gibt CASE den Wert der ELSE-Anweisung zurück (oder NULL, wenn keine ELSE-Anweisung festgelegt ist).

CASE wertet WHEN-Anweisungen der Reihe nach aus und gibt das erste Ergebnis zurück, bei dem die Bedingung erfüllt ist. Die verbleibenden WHEN-Anweisungen und das ELSE-Ergebnis werden nicht ausgewertet. Wenn alle WHEN-Bedingungen „false“ oder NULL sind, gibt CASE das ELSE-Ergebnis zurück. Wenn in diesem Fall keine ELSE-Anweisung festgelegt wurde, wird NULL zurückgegeben.

Beispiele

Nach Ungleichheit suchen

    CASE WHEN Medium != "cpc" THEN "free" ELSE "paid" END

Numerische Dimensionswerte in separate Buckets einteilen

Beispielsweise könnten Sie Bestellungen je nach Bestellwert in „Small“, „Medium“ und „Large“ unterteilen:

    CASE
        WHEN Amount < 20 THEN "Small"
        WHEN Amount >= 20 and Amount < 100 THEN "Medium"
        WHEN Amount >= 100 THEN "Large"
    END

Dimensionswerte vom Typ „Datum“ in separate Buckets einteilen

Beispielsweise können Sie ein Jahr anhand bestimmter Daten in Semester unterteilen:

    CASE
        WHEN Date >= DATE(2018, 9, 23) and Date < DATE(2018, 12, 13) THEN "Fall Semester 2018"
        WHEN Date >= DATE(2018, 1, 3) and Date < DATE(2019, 3, 21) THEN "Winter Semester 2019"
        WHEN Date >= DATE(2019, 3, 27) and Date < DATE(2019, 6, 12) THEN "Spring Semester 2019"
        ELSE "Uncategorized"
    END

Eine logische AND-Bedingung auswerten

    CASE
        WHEN Country ISO Code = "US" AND Medium = "cpc"
        THEN "US - Paid"
        ELSE "other"
    END

Eine logische AND/OR-Bedingung auswerten

    CASE
        WHEN REGEXP_MATCH(Video Title, ".*Google Analytics*")
        AND is_livestream = TRUE
        OR Video Length > 600
        THEN "GA Livestream or long video"
    END

Je nach Parameterwert ein anderes Feld oder einen anderen Wert zurückgeben

Beispiel 1: Es wird eine Dimension auf Grundlage des ausgewählten Parameterwerts zurückgegeben. So können Sie Nutzern die Möglichkeit geben, die Dimension für die Aufschlüsselung zu wechseln, die in einem Diagramm verwendet wird.

    CASE
        WHEN Breakdown = "Product Category" THEN Product Category
        WHEN Breakdown = "Store" THEN Store
    END

Dafür kann auch die Syntax für „simple CASE“ verwendet werden:

    CASE Breakdown
        WHEN "Product Category" THEN Product Category
        WHEN "Store" THEN Store
    END

Beispiel 2: Es wird ein anderer Messwert basierend auf einem Parameterwert zurückgegeben.

CASE WHEN Show Adjusted Cost = TRUE THEN Cost + Adjustments ELSE Cost END

Verschachtelte CASE-Anweisungen

Sie können CASE-Anweisungen verschachteln, um eine komplexere Verzweigungslogik zu erstellen:

    CASE WHEN REGEXP_CONTAINS(SKU, "Hats") THEN
        CASE WHEN Color = "blue"
            THEN "BLUE HAT" ELSE "JUST A HAT"
        END
        ELSE "NOT A HAT"
    END