CASE je SQL-ov uvjetni izraz — vraća različite vrijednosti ovisno o uvjetima, poput if/else naredbe unutar upita. Koristi se u SELECT (izračunati/uvjetni stupci), ORDER BY, agregatnim funkcijama i još puno toga — dodajući uvjetnu logiku upitima.
CASE u SELECT — uvjetni stupci
SELECT
name,
age,
CASE
WHEN age < 18 THEN 'minor'
WHEN age < 65 THEN 'adult'
ELSE 'senior'
END AS age_group -- a computed column based on conditions
FROM users;
Pretraživani CASE evaluira uvjete redom, vraćajući vrijednost prvoga podudarnog WHEN. ELSE omogućava zadanu vrijednost (bez njega, nepodudarni redovi dobivaju NULL).
Jednostavni CASE (podudaranje jednog izraza)
SELECT name,
CASE status -- simple form — compares `status` to each value
WHEN 'A' THEN 'Active'
WHEN 'I' THEN 'Inactive'
ELSE 'Unknown'
END AS status_label
FROM users;
CASE u agregatima — uvjetno brojanje/zbrajanje
-- count/sum conditionally (a very useful pattern)
SELECT
COUNT(CASE WHEN status = 'active' THEN 1 END) AS active_count,
COUNT(CASE WHEN status = 'inactive' THEN 1 END) AS inactive_count,
SUM(CASE WHEN type = 'sale' THEN amount ELSE 0 END) AS sales_total
FROM orders;
-- → multiple conditional counts/sums in ONE query (pivoting-like)
Korištenjem CASE unutar agregatnih funkcija možete izračunati više uvjetnih brojanja ili zbrajanja u jednom upitu — moćna tehnika za izvještavanje (efektivno pivotiranje podataka).
CASE u ORDER BY (prilagođeni redoslijed sortiranja)
ORDER BY CASE status
WHEN 'urgent' THEN 1
WHEN 'normal' THEN 2
ELSE 3
END; -- custom priority sort
Zašto je važno
CASE izraz je svestraan, često potreban SQL element za dodavanje uvjetne logike upitima — transformaciju, kategorizaciju i uvjetno izračunavanje vrijednosti direktno u SQL-u, pa razumijevanje njega je vrijedno za stvarno postavljanje upita i izvještavanje.
Znanje kako koristiti CASE u SELECT (stvaranje uvjetnih/izračunatih stupaca — poput kategoriziranja godina u grupe, mapiranje kodova na oznake) česta je potreba za oblikovanje rezultata upita.
Osobito moćna je upotreba CASE unutar agregata (uvjetno brojanje i zbrajanje — poput brojanja aktivnih naspram neaktivnih u jednom upitu, ili zbrajanje samo određenih vrsta) — ključna tehnika za izvještavanje i analitiku koja efektivno pivotira podatke, izračunavajući više uvjetnih metrika u jednom učinkovitom upitu. CASE u ORDER BY omogućava prilagođene redoslijede sortiranja (sortiranje na osnovu prioriteta).
Razumijevanje i pretraživanog oblika (evaluacija uvjeta) i jednostavnog oblika (podudaranje vrijednosti), te različitih konteksta u kojima se CASE primjenjuje, pokriva praktične primjene.
Jer je dodavanje uvjetne logike — kategorizacija podataka, uvjetna agregacija za izvještaje, prilagođeno sortiranje — česta potreba pri postavljanju upita, posebno u izvještavanju/analitici, i jer je CASE standardni, fleksibilan način da se ta logika izrazi direktno u SQL-u (izbjegavajući povlačenje podataka u kod aplikacije za jednostavne transformacije), savladavanje CASE izraza je korisno, često primjenjivano znanje koje dodaje ekspresivnu moć upitima, posebno vrijedno za uvjetne obrasce agregiranja koji su središte SQL-om temeljenog izvještavanja i analize podataka.
