Podczas tworzenia zapytań poza pobieraniem wartości bezpośrednio z kolumny mamy możliwość jej wyliczenia. Mogą to być proste lub bardziej skomplikowane obliczenia. Zdarzają się jednak przypadki, gdy wartości w kolumnie wynikowej ma kilka algorytmów, które ją wyliczają.

Funkcja CASE pozwala nam na sterowanie tym, w jaki sposób zostanie wyliczony nasz wynik. Prościej mówiąc jest to taki IF tyle, że w instrukcji SELECT.

Warunki można tworzyć w ten sam sposób co w klauzurze WHERE. Składnia dla sprawdzania różnych wartości w pojedynczym elemencie prezentuje się w następujący sposób:

Po co nam to i kiedy używać? Jeśli dla konkretnych wartości w danej kolumnie/zmiennej chcemy zmienić wartość wynikową. Np. chcielibyśmy drukować miesiące w języku polskim, które zostały wyliczone na podstawie daty sprzedaży:

Takie działanie wyciągnie numer miesiąca z kolumny DataSprzedazy i dla każdego wiersza pokaże wartość ze słowną nazwą.

Jeśli chcemy sprawdzać warunki, wtedy składnia CASE wygląda tak:

Bardzo prostym przykładem może być określenie płci pracowników na podstawie imienia. Polskie imiona kobiet poza kilkoma wyjątkami kończą się na literę a, zatem:

Jako wynik otrzymamy kolumnę z imionami, a w drugiej kolumnie płeć osoby wyznaczoną na podstawie imienia.

Tak jak w przypadku instrukcji IF, tutaj ELSE też jest opcjonalny i podajemy w nim wynik, który ma zostać zwrócony, gdy żaden z warunków nie zostanie spełniony. W sytuacji braku ELSE i niespełnienia żadnego warunku pojawi się NULL.

Należy pamiętać, że jeśli rozpoczynamy instrukcję CASE musimy zakończyć ją END. Jest to bardzo często popełniany błąd nie tylko u początkujących. Co gorsza otrzymywany błąd nie naprowadza w żaden sposób na rozwiązanie problemu. Polecam pisać CASE END i później pomiędzy tymi słowami kluczowymi uzupełnić pozostałą część instrukcji.