ELECTE 4.0 wystartowało — AI Agent jest już dostępny.Zobacz, co nowego
Dane i analizy13 min czytania

CASE WHEN w SQL: praktyczny przewodnik po analizie danych

Opanuj logikę warunkową dzięki naszemu przewodnikowi po instrukcji case when sql. Poznaj składnię, rzeczywiste przykłady i dowiedz się, jak przekształcić dane w informacje biznesowe.

CASE WHEN in SQL: guida pratica per l'analisi dei dati

Podsumuj ten artykuł z pomocą AI

Jeśli pracujesz z danymi, instrukcja CASE WHEN w SQL jest jak scyzoryk szwajcarski dla twoich zapytań. To jedna z tych klauzul, o której, gdy już ją odkryjesz, zastanawiasz się, jak wcześniej mogłeś się bez niej obejść. Pozwala wprowadzić logikę warunkową (typu "jeśli zdarzy się to, zrób tamto") bezpośrednio w twojej analizie

Zamiast eksportować tysiące wierszy do arkusza kalkulacyjnego, żeby potem ręcznie segmentować klientów lub klasyfikować sprzedaż, dzięki CASE WHEN możesz zintegrować tę logikę bezpośrednio w zapytaniu. Dla ciebie oznacza to szybsze raporty, dokładniejsze analizy i, ostatecznie, mądrzejsze decyzje biznesowe. To pierwszy krok, by twoje analizy danych stały się naprawdę proaktywne.

Co naprawdę robi CASE WHEN w SQL

Wyobraź sobie chaotyczny strumień danych, jak kolumna samochodów na autostradzie. Bez reguł to tylko długi wąż pojazdów. CASE WHEN działa jak inteligentny system sortowania: czerwone samochody w lewo, niebieskie w prawo, wszystkie pozostałe jadą prosto swoją drogą.

Podobnie w SQL można pobrać dane i za pomocą jednej klauzuli przekształcić je w przejrzyste, uporządkowane i gotowe do analizy informacje.

Dla małych i średnich przedsiębiorstw nie jest to zwykła sztuczka techniczna, ale konkretna przewaga strategiczna. Analiza danych przestaje być procesem reaktywnym, składającym się z powolnych i ręcznych czynności, a staje się procesem proaktywnym i natychmiastowym. Korzyści dla Twojej firmy są oczywiste:

  • Czyszczenie w czasie rzeczywistym: poprawiasz i standaryzujesz wartości już podczas ekstrakcji
  • Dynamiczna kategoryzacja: segmentujesz klientów, produkty i transakcje według wyników, daty lub wartości
  • Wzbogacenie kontekstowe: tworzysz kolumny ze statusem biznesowym ("Lojalny Klient", "Zagrożony")

W istocie CASE WHEN to pierwszy krok, by przekształcić twoje dane z prostych liczb w strategiczne insighty. To most, który łączy surową tabelę z raportem pozwalającym podejmować lepsze decyzje.

W kolejnych sekcjach zapoznamy się z dokładną składnią i praktycznymi przykładami, aby opanować tę klauzulę i rozwiązać konkretne problemy biznesowe.

Naucz się składni case when krok po kroku

Aby opanować logikę warunkową w SQL, najlepiej zacząć od podstaw i dobrze zrozumieć strukturę CASE WHEN. Zacznijmy od jego najprostszej formy, "prostego CASE", idealnej dla tych, którzy stawiają pierwsze kroki.

Ta wersja jest idealna, gdy musisz sprawdzić wartości w pojedynczej kolumnie i przypisać do każdej z nich inny wynik. Prosta, przejrzysta, skuteczna.

Struktura CASE Semplice

Składnia jest zaskakująco intuicyjna. Weźmy praktyczny przykład: wyobraź sobie, że masz kolumnę StatoOrdine z wartościami tekstowymi typu 'Spedito', 'In Lavorazione' czy 'Annullato'. Do twoich raportów dużo wygodniejszy byłby kod numeryczny, prawda?

Oto jak przekształcić ten tekst na liczby:

SELECTIDOrdine,StatoOrdine,CASE StatoOrdineWHEN 'Spedito' THEN 1WHEN 'In Lavorazione' THEN 2WHEN 'Annullato' THEN 3ELSE 0 -- Questo è il nostro paracaduteEND AS StatoNumericoFROM Vendite;

Jak widzisz, CASE wskazuje na kolumnę do sprawdzenia (StatoOrdine). Każde WHEN sprawdza, czy wartość jest równa czemuś konkretnemu, a THEN przypisuje odpowiedni wynik.

Klauzula ELSE jest kluczowa. To rodzaj siatki bezpieczeństwa: jeśli żaden z warunków WHEN nie zostanie spełniony, przypisuje wartość domyślną (tutaj 0), ratując cię przed irytującymi wynikami NULL. Jeśli chcesz zobaczyć podobne tabele w akcji, możesz rzucić okiem na ten przykład bazy danych.

Siła CASE Szukane

"Wyszukiwany CASE" (Searched CASE) to prawdziwa skrzynka z narzędziami. To właśnie tutaj ujawnia się cała elastyczność tej instrukcji, ponieważ nie jesteś już ograniczony do sprawdzania jednej kolumny.

Dzięki wyszukiwanemu CASE możesz budować złożone warunki, które oceniają wiele pól jednocześnie, używając operatorów logicznych takich jak AND i OR, czy porównawczych jak > i <. To idealne narzędzie do wdrożenia rozbudowanej logiki biznesowej bezpośrednio w twoim zapytaniu.

Wyszukiwany CASE nie ogranicza się do prostego sprawdzenia równości. Ocenia, czy dany warunek jako całość jest prawdziwy, dając ci możliwość tworzenia zaawansowanych reguł, które odzwierciedlają realną dynamikę twojej firmy.

Załóżmy, że chcesz sklasyfikować sprzedaż według kwoty i kategorii produktu. Oto jak to zrobić:

SELECTIDProdotto,Prezzo,Categoria,CASEWHEN Prezzo > 1000 AND Categoria = 'Elettronica' THEN 'Vendita Premium'WHEN Prezzo > 500 THEN 'Vendita Alto Valore'ELSE 'Vendita Standard'END AS SegmentoVenditaFROM Vendite;

Ta zdolność do łączenia wielu warunków sprawia, że CASE WHEN jest niezastąpionym filarem każdej analizy danych, która chce wyjść poza powierzchowność.

Oto tabela podsumowująca kluczowe różnice między tymi dwoma składniami, która pomoże Ci wybrać odpowiednią w odpowiednim momencie.

Porównanie składni case simple i case sought

W tej tabeli porównano bezpośrednio dwie główne formy klauzuli CASE, wskazując, kiedy należy używać każdej z nich, oraz przedstawiając ich strukturę obok siebie, aby ułatwić zrozumienie.

Wybór między nimi nie jest kwestią tego, co jest „lepsze”, a co „gorsze”, ale raczej tego, które narzędzie jest bardziej odpowiednie do danego zadania. Do bezpośredniej i szybkiej kontroli idealnie nadaje się CASE Semplice, natomiast w przypadku złożonych procesów biznesowych konieczne jest zastosowanie CASE Cercato.

Wizualnie możesz wyobrazić sobie CASE WHEN jako drzewo decyzyjne, które bierze surowe dane i kieruje je do dobrze zdefiniowanych kategorii, wprowadzając porządek i przejrzystość w Twoich analizach.


Ten obrazek pokazuje właśnie to: jak pojedyncza instrukcja SQL może pobrać każdego klienta i, na podstawie kilku reguł, skierować go do odpowiedniej kategorii. To jest siła logiki warunkowej zastosowanej do danych.

Jak przekształcić surowe dane w informacje biznesowe

Teraz, gdy składnia nie ma już przed Tobą tajemnic, nadszedł czas, aby zobaczyć CASE WHEN w akcji w rzeczywistych scenariuszach biznesowych. Prawdziwa moc tej klauzuli ujawnia się, gdy używasz jej do przekształcania liczb i kodów w konkretne insighty, w prawdziwe strategiczne wskazówki dla Twojej firmy.

Skupimy się na dwóch podstawowych zastosowaniach: segmentacji klientów i analizie marży produktów. Jest to pierwszy, decydujący krok w kierunku podejmowania decyzji opartych na danych, a nie na intuicji.

Segmentacja klientów według wartości

Jednym z najczęstszych celów każdej firmy jest zrozumienie, kim są najlepsi klienci. Identyfikacja segmentów klientów o wysokiej, średniej i niskiej wartości pozwala personalizować kampanie marketingowe, optymalizować strategie sprzedażowe i poprawiać lojalność klientów.

Dzięki CASE WHEN możesz stworzyć taką segmentację bezpośrednio w swoim zapytaniu. Wyobraź sobie, że masz tabelę FatturatoClienti z kolumnami ClienteID i TotaleAcquistato.

Oto jak możesz oznaczyć każdego klienta za jednym zamachem:

SELECTClienteID,TotaleAcquistato,CASEWHEN TotaleAcquistato > 5000 THEN 'Alto Valore'WHEN TotaleAcquistato BETWEEN 1000 AND 5000 THEN 'Medio Valore'ELSE 'Basso Valore'END AS SegmentoClienteFROM FatturatoClientiORDER BY TotaleAcquistato DESC;

Dzięki tej pojedynczej instrukcji dodałeś nową kolumnę, SegmentoCliente, która wzbogaca surowe dane o natychmiastowy kontekst biznesowy. Teraz możesz łatwo policzyć, ilu masz klientów w każdym segmencie, lub przeanalizować ich konkretne zachowania zakupowe, poprawiając ROI Twoich kampanii marketingowych.

Obliczanie i klasyfikowanie marży produktów

Innym strategicznym zastosowaniem case when sql jest analiza rentowności. Nie wszystkie produkty przyczyniają się w takim samym stopniu do zysków. Klasyfikacja artykułów na podstawie ich marży pomaga zdecydować, gdzie skoncentrować wysiłki, które produkty promować, a które być może warto porzucić.

Weźmy tabelę Prodotti z kolumnami PrezzoVendita i CostoAcquisto. Najpierw obliczamy marżowość, a zaraz potem ją klasyfikujemy.

SELECTNomeProdotto,PrezzoVendita,CostoAcquisto,CASEWHEN (PrezzoVendita - CostoAcquisto) / PrezzoVendita > 0.5 THEN 'Alta Marginalità'WHEN (PrezzoVendita - CostoAcquisto) / PrezzoVendita BETWEEN 0.2 AND 0.5 THEN 'Media Marginalità'ELSE 'Bassa Marginalità'END AS CategoriaMarginalitaFROM ProdottiWHERE PrezzoVendita > 0; -- Podstawowe, aby uniknąć dzielenia przez zero

Również w tym przypadku jedno zapytanie przekształciło proste kolumny cenowe w strategiczną klasyfikację, gotową do wykorzystania w raportach w celu optymalizacji katalogu i maksymalizacji zysków.


Od SQL do automatyzacji dzięki platformom analitycznym

Umiejętność pisania takich zapytań jest niezwykle cenna. Ale co się dzieje, gdy wymagania stają się bardziej złożone lub gdy menedżerowie bez wiedzy technicznej muszą tworzyć takie segmenty na bieżąco? W tym momencie do gry wkraczają nowoczesne platformy do analizy danych bez kodowania.

To nie sprawia, że SQL staje się przestarzały — wręcz przeciwnie, wzmacnia jego wartość. Logika pozostaje identyczna, ale wykonanie staje się zautomatyzowane i dostępne dla całego zespołu. Rezultatem jest natychmiastowy ROI: zespoły biznesowe mogą eksplorować dane i tworzyć złożone segmenty bez zależności od działu IT, drastycznie przyspieszając proces, który prowadzi od surowych danych do użytecznych informacji dla decyzji. Analitycy z kolei mogą poświęcić się bardziej złożonym problemom, wiedząc, że rutynowe analizy są obsługiwane automatycznie.

Zaawansowane techniki z CASE WHEN

Dobrze, teraz gdy oswoiłeś się z podstawową segmentacją, czas podnieść poziom. Odkryjmy razem, jak przekształcić CASE WHEN w narzędzie do złożonych analiz i zaawansowanego raportowania, wszystko w ramach jednego zapytania.


Tworzenie „tabeli przestawnej” za pomocą funkcji agregacji

Jedną z najpotężniejszych technik jest połączenie CASE WHEN z funkcjami agregującymi, takimi jak SUM, COUNT czy AVG. Ta sztuczka pozwala tworzyć "tabele przestawne" bezpośrednio w SQL, obliczając konkretne metryki dla różnych segmentów bez konieczności uruchamiania wielu zapytań.

Załóżmy, że chcesz porównać w tym samym raporcie całkowity obrót generowany przez klientów „Premium” z obrotem generowanym przez klientów „Standard”. Możesz to zrobić za jednym zamachem.

SELECTSUM(CASE WHEN SegmentoCliente = 'Premium' THEN Fatturato ELSE 0 END) AS FatturatoPremium,SUM(CASE WHEN SegmentoCliente = 'Standard' THEN Fatturato ELSE 0 END) AS FatturatoStandardFROM Vendite;

Co się tutaj dzieje? Funkcja SUM sumuje Fatturato tylko wtedy, gdy warunek określony w WHEN jest prawdziwy. Dla wszystkich pozostałych wierszy sumuje zero. To niezwykle efektywny sposób na agregowanie danych w wielu wymiarach jednocześnie, oszczędzając czas i redukując złożoność.

Zarządzanie logiką wielopoziomową za pomocą zagnieżdżonych przypadków

Czasami logika biznesowa nie jest tak liniowa. Może potrzebujesz segmentować klientów nie tylko na podstawie tego, ile wydają, ale także jak często kupują. Tu wkracza logika wielopoziomowa, którą możesz zaimplementować, zagnieżdżając jeden CASE w drugim.

Zagnieżdżony CASE pozwala tworzyć precyzyjne podkategorie. Na przykład możemy chcieć podzielić naszych klientów "Wysokiej Wartości" na dwie dodatkowe grupy: "Lojalnych" i "Okazjonalnych".

SELECTClienteID,TotaleSpeso,NumeroAcquisti,CASEWHEN TotaleSpeso > 5000 THENCASEWHEN NumeroAcquisti > 10 THEN 'Alto Valore - Fedele'ELSE 'Alto Valore - Occasionale'ENDWHEN TotaleSpeso > 1000 THEN 'Medio Valore'ELSE 'Basso Valore'END AS SegmentoDettagliatoFROM RiepilogoClienti;

Uwaga na czytelność: choć bardzo potężne, zagnieżdżone CASE mogą stać się koszmarem do czytania i utrzymania. Jeśli logika przekracza dwa poziomy głębokości, zatrzymaj się. Być może warto podzielić problem na kilka kroków, na przykład używając Common Table Expressions (CTE), aby wszystko było bardziej przejrzyste.

Radzenie sobie z różnicami między różnymi bazami danych

Choć CASE WHEN jest ugruntowanym standardem SQL, istnieją drobne różnice implementacyjne między poszczególnymi systemami zarządzania bazami danych (DBMS). Znajomość ich jest kluczowa, aby pisać przenośny kod.

  • MySQL: W pełni zgodny ze standardem. Możesz używać CASE praktycznie wszędzie: w klauzulach SELECT, WHERE, GROUP BY i ORDER BY.
  • PostgreSQL: Bardzo rygorystycznie przestrzega standardu i oferuje bardzo solidną obsługę typów danych, dzięki czemu konwersje typów wewnątrz THEN są zarządzane w przewidywalny sposób.
  • SQL Server: Doskonale obsługuje CASE, ale oferuje też niestandardową funkcję IIF(warunek, wartość_jeśli_prawda, wartość_jeśli_fałsz). IIF to skrót dla prostej logiki binarnej (jeden IF/ELSE), ale CASE WHEN pozostaje najlepszym wyborem pod względem czytelności i przenośności.

Znajomość tych niuansów pomoże Ci pisać zapytania case when sql, które nie tylko działają, ale są też solidne i łatwo adaptowalne do różnych kontekstów technologicznych.

Typowe błędy i jak przyspieszyć działanie zapytań

Napisanie działającego CASE WHEN to dopiero pierwszy krok. Prawdziwy skok jakościowy następuje, gdy nauczysz się sprawić, by było nie tylko poprawne, ale też szybkie i odporne na błędy. Wolne zapytanie lub pełne błędów może zniweczyć Twoje raporty i spowolnić decyzje biznesowe.

Zobaczmy razem, jak udoskonalić technikę, uniknąć najczęstszych pułapek i zoptymalizować wydajność analiz.

Zwróć uwagę na porządek: mała sztuczka, która robi wielką różnicę

Oto szczegół, który często jest niedoceniany: w klauzuli CASE WHEN baza danych analizuje warunki w dokładnie takiej kolejności, w jakiej je napisałeś. Gdy tylko znajdzie ten prawdziwy, zatrzymuje się i zwraca wynik.

Takie zachowanie ma ogromny wpływ na wydajność, zwłaszcza podczas pracy z tabelami zawierającymi miliony wierszy.

Sztuczka? Zawsze umieszczaj na pierwszym miejscu warunki, które Twoim zdaniem będą występować najczęściej. W ten sposób silnik bazy danych wykona minimalny wysiłek dla większości wierszy, drastycznie redukując czas wykonania.

Najczęstsze potknięcia (i jak ich uniknąć)

Nawet najbardziej doświadczeni analitycy czasami popełniają klasyczne błędy. Znajomość tych błędów to najlepszy sposób, aby szybko je wykryć i skorygować.

  • Zapomnienie o klauzuli ELSE
    To błąd numer jeden. Jeśli pominiesz ELSE i żaden z Twoich warunków WHEN nie zostanie spełniony, wynikiem dla tego wiersza będzie NULL. Ten nieoczekiwany NULL może wywołać efekt kaskadowy, zaburzając kolejne obliczenia.
  • Kod obarczony ryzykiem:SELECTPrezzo,CASEWHEN Prezzo > 100 THEN 'Alto'WHEN Prezzo > 50 THEN 'Medio'END AS FasciaPrezzo -- Se Prezzo è 40, il risultato è NULLFROM Prodotti;
  • Bezpieczne rozwiązanie:
    Zawsze dodawaj ELSE jako siatkę bezpieczeństwa, aby przechwycić wszystkie nieprzewidziane przypadki.SELECTPrezzo,CASEWHEN Prezzo > 100 THEN 'Alto'WHEN Prezzo > 50 THEN 'Medio'ELSE 'Basso' -- Ecco la nostra rete di sicurezza!END AS FasciaPrezzoFROM Prodotti;
  • Konfliktujące typy danych
    Wszystkie wyrażenia po THEN muszą zwracać ten sam typ danych (lub typy kompatybilne). Jeśli spróbujesz zmieszać tekst, liczby i daty w tej samej kolumnie generowanej przez CASE, baza danych zwróci błąd.
  • Nakładające się warunki
    To bardziej podstępny błąd logiczny. Jeśli masz warunki, które się nakładają, pamiętaj o złotej zasadzie: wykonywany jest tylko pierwszy warunek, który okaże się prawdziwy. Kolejność jest wszystkim. Jeśli umieścisz WHEN TotaleAcquistato > 1000 przed WHEN TotaleAcquistato > 5000, żaden klient nigdy nie zostanie oznaczony jako 'VIP', ponieważ pierwszy warunek zawsze go "przechwyci" wcześniej.

Czy istnieją alternatywy dla CASE WHEN?

Choć case when sql jest uniwersalnym standardem – i niemal zawsze najlepszym wyborem pod względem czytelności i kompatybilności – niektóre dialekty SQL oferują pewne skróty.

W SQL Server, na przykład, znajdziesz funkcję IIF(warunek, wartość_jeśli_prawda, wartość_jeśli_fałsz). Jest wygodna dla prostej logiki binarnej, ale CASE pozostaje niepokonany w obsłudze wielu warunków i pod względem przejrzystości w złożonych scenariuszach.

W zdecydowanej większości przypadków trzymanie się standardu CASE WHEN jest najmądrzejszym wyborem. Gwarantuje, że Twój kod będzie zrozumiały dla każdego i będzie działać bez niespodzianek na różnych platformach.

Poza CASE WHEN: Kiedy SQL już nie wystarcza

Pisanie zapytań CASE WHEN jest przydatne. Ale jeśli co tydzień musisz przepisywać tę samą logikę segmentacji dla raportów miesięcznych lub, co gorsza, jeśli Twój zespół marketingowy co dwa dni pyta Cię „czy możesz dodać również ten segment?”, masz problem ze skalowalnością, a nie z SQL.

Kiedy pisanie zapytań staje się wąskim gardłem

Logika warunkowa pozostaje taka sama – niezależnie od tego, czy piszesz ją ręcznie, czy definiujesz za pomocą interfejsu – ale czas, jaki na to poświęcasz, zmienia się radykalnie. Zapytanie, którego napisanie, przetestowanie i udokumentowanie zajmuje 20 minut, można odtworzyć w ciągu 2 minut za pomocą interfejsu wizualnego. Pomnóż to przez wszystkie analizy, które wykonujesz w ciągu miesiąca, a zrozumiesz, gdzie tracisz czas.

Prawdziwym problemem nie jest pisanie SQL. Problemem jest to, że gdy Ty piszesz zapytania, ktoś inny w Twoim zespole czeka na dane, by podjąć decyzje. A gdy dane w końcu docierają, często użyteczne okno na działanie już się zawęziło.

Platformy takie jak ELECTE właśnie to: przekształcanie logiki biznesowej w zapytania. Nie eliminuje to wartości umiejętności pisania w języku SQL — wręcz przeciwnie, zrozumienie tego, co dzieje się „pod maską”, sprawia, że korzystanie z dowolnego narzędzia analitycznego jest znacznie bardziej efektywne. Pozwala to jednak uniknąć powtarzalnych czynności.

Różnica w praktyce: zamiast spędzać godziny na pisaniu i debugowaniu zapytań w celu segmentacji klientów, poświęcasz 5 minut na zdefiniowanie reguł, a resztę czasu na analizę znaczenia tych segmentów dla biznesu. To nie jest magia, to po prostu usunięcie tarcia między „mam pytanie” a „mam odpowiedź”.

Jeśli spędzasz połowę dnia na pozyskiwaniu danych zamiast na ich analizowaniu, prawdopodobnie już wiesz, gdzie leży problem.

Od ręcznego SQL do automatycznego wglądu

Platformy takie jak ELECTE logikę CASE WHEN poprzez interfejsy bezkodowe. Zdefiniuj reguły segmentacji za pomocą kilku kliknięć, bez pisania ani jednej linii kodu. Rezultat: analizy, które wcześniej zajmowały godziny, są gotowe w ciągu kilku minut i dostępne dla całego zespołu bez konieczności korzystania z pomocy działu IT.

Za kulisami platforma wykonuje podobne — i często znacznie bardziej zaawansowane — operacje warunkowe, uwalniając Cię od powtarzalnych zadań. Dzięki temu menedżerowie i analitycy mogą skupić się na „dlaczego” stojącym za liczbami, a nie na „jak” je uzyskać.

Często zadawane pytania dotyczące CASE WHEN

Nawet po zobaczeniu wielu przykładów, naturalne jest, że wciąż masz pewne wątpliwości. Odpowiadamy na najczęstsze pytania, które pojawiają się, gdy zaczyna się korzystać z CASE WHEN w SQL.

Jaka jest różnica między CASE a IF w SQL?

Kluczowa różnica: przenośność. CASE WHEN jest częścią standardu SQL (ANSI SQL), co oznacza, że Twój kod będzie działał praktycznie na każdej nowoczesnej bazie danych, od PostgreSQL i MySQL po SQL Server i Oracle.

Instrukcja IF() jest natomiast często funkcją specyficzną dla danego dialektu SQL, jak T-SQL w SQL Server. Choć może wydawać się krótsza dla prostego warunku binarnego, CASE WHEN to wybór profesjonalistów, gdy chodzi o pisanie czytelnego kodu, który działa wszędzie bez zmian.

Czy mogę używać CASE WHEN w klauzuli WHERE?

Zdecydowanie tak. To nie jest najczęstsze zastosowanie, ale w pewnych scenariuszach jest niesamowicie potężne przy tworzeniu złożonych filtrów warunkowych. Wyobraź sobie na przykład, że chcesz wyodrębnić wszystkich klientów "premium", lub tylko klientów "standardowych", którzy nie dokonują zakupów od ponad roku.

Oto jak można skonfigurować logikę:

SELECT NomeCliente, UltimoAcquistoFROM ClientiWHERECASEWHEN Segmento = 'Premium' THEN 1WHEN Segmento = 'Standard' AND UltimoAcquisto < '2023-01-01' THEN 1ELSE 0END = 1;

W praktyce mówisz bazie danych: „uwzględnij tylko wiersze, dla których ta złożona logika zwraca wartość 1”.

Ile warunków WHEN mogę mieć?

Teoretycznie standard SQL nie narzuca sztywnego limitu liczby WHEN. W praktyce jednak zapytanie z dziesiątkami warunków staje się koszmarem do czytania, utrzymania i optymalizacji.

Jeśli zdarza ci się pisać CASE, który nigdy się nie kończy, potraktuj to jako sygnał ostrzegawczy. Prawdopodobnie istnieje mądrzejszy sposób rozwiązania problemu, na przykład użycie lookup table (tabeli mapującej), aby zapytanie było czystsze i wydajniejsze.

Jak CASE WHEN zachowuje się w przypadku wartości NULL?

Tutaj trzeba uważać. Wartości NULL w SQL są szczególne. Warunek taki jak WHEN Colonna = NULL nigdy nie zadziała tak, jak się tego oczekuje, ponieważ w SQL NULL nie jest równe niczemu innemu, nawet samemu sobie. Aby sprawdzić, czy wartość jest NULL, poprawna składnia to zawsze WHEN Colonna IS NULL.

W takich przypadkach klauzula ELSE staje się twoim najlepszym przyjacielem. Pozwala w sposób czysty i przewidywalny obsłużyć wszystkie przypadki nieobjęte przez WHEN, w tym NULL. Użyj jej, aby przypisać wartość domyślną, a unikniesz nieoczekiwanych wyników w swoich analizach.

Komentarze

Brak komentarzy — zacznij rozmowę.