CASE value WHEN [összehasonlító_érték] THEN eredmény [WHEN [összehasonlító_érték] THEN eredmény...] [ELSE eredmény] END
CASE WHEN [feltétel] THEN eredmény [WHEN [feltétel] THEN eredmény...] [ELSE eredmény] END
select * from employees; +----+--------------+---------+--------+ | id | name | city | salary | +----+--------------+---------+--------+ | 1 | Para Béla | Szolnok | 342 | | 2 | Fele Irén | Szeged | 332 | | 3 | Nora Imre | Szeged | 362 | | 4 | Szal Katalin | Szolnok | 372 | | 5 | Endő Lajos | Miskolc | 334 | | 6 | Tengi Mária | Szolnok | 329 | | 7 | Csonka Ernő | Miskolc | 392 | +----+--------------+---------+--------+
select sum(case when city='Szeged' then 1 else 0 end) as 'Szegedi dolgozók száma' from employees;
Önmagában nem sok értelme van, hiszen egyszerűbb egy WHERE direktíva használata. Ha viszont, egyszerre szeretném látni hány dolgozó van összesen, és hány van Szegedről:
select count(*) as 'Dolgozók száma', sum(case when city='Szeged' then 1 else 0 end) as 'Szegedi dolgozók száma' from employees;