SQL CASE WHEN THEN ELSE s příklady

CASE je výraz (expression), který umožňuje aplikovat IF/THEN logiku v sql skritpu. Jde o podmíněnou logiku, kdy na základě podmínky (ve WHEN) vrátí hodnotu definovanou v THEN části. Existují 2 formy Simple CASE Expression (jednoduchá forma) a Searched CASE expression (forma pro vyhledávání).

Konstrukce: CASE obsahuje tyto kompomenty – CASE, WHEN, THEN, ELSE, END

  1. Začínáme příkazem CASE
  2. Následuje alespoň jedna dvojice WHEN/THEN příkazů (WHEN podmínka THEN hodnota);
  3. Příkaz ELSE je volitelný a poskytuje způsob, jak podchytit hodnoty, které nejsou uvedeny v části WHEN/THEN
  4. Příkaz END musí být na konci a ukončujeme tím výraz;

Pozn. Pokud není ELSE definováno je pro varianty, které nejsou uvedeny ve WHEN/THEN predikátech, je vrácena hodnota NULL

Syntaxe Simple SQL CASE formy:

SELECT
    CASE Sloupec
        WHEN 0 THEN 'No'
        WHEN 1 THEN 'Yes'
        ELSE 'N/A'
    END AS Vysledky
FROM dbo.Tabulka;

Jednoduchá forma umožňuje hodnoty určitého sloupce porovnat proti nadefinovaným hodnotám a následně na základě těchto hodnot přiřadit výsledek. V tomto případě se porovnává sloupec „Sloupec“. Pokud je hodnota 0, je aktivována první WHEN/THEN a vrátí se „No“, pokud je 1 vrátí „Yes“ a pokud není 1 ani 0 tak vrátí ‚N/A‘.

Syntaxe Searched SQL CASE formy:

SELECT
    CASE
      WHEN ZnamkaNaVysvedceni BETWEEN 3 AND 5 OR (Predmet='Chovani' AND ZnamkaNaVysvedceni <>1) THEN 'Špatná známka'
      WHEN ZnamkaNaVysvedceni >= 1 THEN 'Dobrá známka'
      ELSE 'Neplatná hodnota. Známky na vysvědčení můzou být v rozsahu 1-5'
    END AS Vysledky
FROM dbo.Vysvedceni;

 

Tato forma je oproti jednoduché formě více flexibilnější. Jednoduchá forma umožňuje porovnat hodnoty na základě rovnosti. Searched CASE forma umožňuje aplikovat podmínky pomocí operátorů. Použití CASE jsme ukázali na příkladu s vysvědčením. Pomocí konstrukce říkáme, že každá známka >=3 nebo známka z chování <>1 je špatná. Ostatní známky jsou dobré.

Kde se dá použít? 

  1. SELECT – podmíněnou logikou vrátíte nadefinované hodnoty
  2. WHERE – lze použít i k definování podmínky
  3. Agregace – výsledek můžete zabalit do agregačních funkcí
  4. GROUP BY – pokud definujete nějakou agregaci přes pole definované přes CASE, můžete umístit samotný case do GROUP BY
  5. ORDER – pomocí case lze seřadit výsledky

Reagovat na příspěvek