CASE (Suchanfrage)

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: WENN.

Verwendungsbeispiel

CASE wird oft dazu verwendet, neue Datenkategorien oder ‑gruppen zu erstellen. Wenn Sie z. B. bestimmte Länderwerte in einer Dimension namens „Vertriebsregion“ gruppieren möchten, könnten Sie die folgende CASE-Anweisung erstellen:


    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 condition ausgewertet. Ist die Bedingung erfüllt, wird „true“ zurückgegeben, sonst „false“.

  • result: ein Feld oder Ausdruck eines beliebigen Typs. Jede WHEN-Anweisung muss eine übereinstimmende THEN-Anweisung haben, die die Ergebnisse angibt, die zurückgegeben werden sollen, wenn diese WHEN condition erfüllt ist. Wenn es mehrere WHEN-Anweisungen gibt, gibt die CASE-Anweisung die result für die erste wahre 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-Klausel enthält und keine der WHEN-Klauseln zutrifft, gibt die CASE-Anweisung NULL zurück.

Eine CASE-Anweisung kann nur eine ELSE-Klausel 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: Eine Bedingung, die ausgewertet werden soll. Eine CASE-Anweisung kann mehrere WHEN-Anweisungen enthalten.
  • THEN: Das Ergebnis, das zurückgegeben wird, wenn die Bedingung der WHEN-Anweisung erfüllt ist. Für jede WHEN-Klausel in Ihrer CASE-Anweisung muss eine THEN-Klausel vorhanden sein.
  • ELSE: Optional. Wenn keine Bedingung der WHEN-Anweisung erfüllt ist, gibt CASE den Wert der ELSE-Anweisung zurück oder NULL, wenn keine ELSE-Anweisung angegeben ist.

CASE wertet jede aufeinanderfolgende WHEN-Anweisung aus und gibt das erste Ergebnis zurück, bei dem die Bedingung erfüllt ist. Alle verbleibenden WHEN-Klauseln und das ELSE-Ergebnis werden nicht ausgewertet. Wenn alle WHEN-Bedingungen falsch sind oder NULL, gibt CASE das Ergebnis ELSE zurück. Wenn es keine ELSE-Anweisung gibt, wird der Wert 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

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ückgeben. 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

Sie können diese Formel auch mit der Syntax für „simple CASE“ schreiben:

    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ückgeben.

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