Posted By: Ray (Keep on the sunny side) on 'CZdatabases'
Title:     Re: Oracle a podmineny vypocet
Date:      Mon Jun 25 13:49:32 2001

>     Nazdarek.
>   Hledal jsem obdobu funkce if() v Oracle a nenasel. Nenapada nekoho jak 
> udelat nasledujici vec v selectu bez pouziti procedur ?
>   Ve sloupci typ je Z nebo * ve sloupci vysl je 0-5
>   Potreboval bych neco jako nasledujici select
> select sum(if(typ='Z',if(vysl>=1 and vysl<=3,1,0),if(vysl=5,1,0)))

Moc nerozumim, co tim myslis. Jestli znamena if(vysl>=1 and vysl<=3,1,0)
to same, co v C (((vysl>=1) && (vysl<=3)) ? 1 : 0), tak muzes zkusit

select sum( decode(typ,'Z',decode(vysl,1,1,2,1,3,1,0),
                           decode(vysl,5,1,0))) from ...

tedy.. pokud to chces mit mermomoci hned za selectem. Jinak se takovehle veci 
delaji ve where klauzuli

select sum(1) from ...
  where ((typ='Z') and (vysl>=1) and (vysl<=3)) or
        (((typ<>'Z') or (typ is NULL)) and (vysl=5));

  Ray
 

Search the boards