is it possible

Table AA


ID_USER      PERIOD          SALARY      overtime    overtime_wages  bonus
1001        1-MAY-2012         $50         13             $3.5         -
1002 1-MAY-2012 $60 16 $5 - 1001 1-JUN-2012 $50 10 $3.5 -
1002 1-JUN-2012 $60 7 $5 -
if i want to find the value of bonuses with the following provisions:

if overtime * overtime_wages <= $ 15 then $ 5 bonus
if overtime * overtime_wages between $ 15 and $ 20 the bonus $ 7
if overtime * overtime_wages >= $ 20 then $ 10 bonus

how to resolve the logic ? Here's my script :

UPDATE "AA" A 
SET A.BONUS = ( select (( A.OVERTIME*A.OVERTIME_WAGES)<= $ 15)=$5 or
                       (( A.OVERTIME*A.OVERTIME_WAGES) between $ 15 and $ 20 )=$7 or
                       (( A.OVERTIME*A.OVERTIME_WAGES)>= $ 20)=$10 
FROM "AA" A )
有帮助吗?

解决方案

I think you are looking for the case statement:

UPDATE "AA" A 
    SET A.BONUS = (case when A.OVERTIME*A.OVERTIME_WAGES <= 15 then 5
                        when A.OVERTIME*A.OVERTIME_WAGES between 15 and 20 then 7
                        when A.OVERTIME*A.OVERTIME_WAGES >= 20 then 10 
                   end);

You can actually simplify this to:

UPDATE "AA" A 
    SET A.BONUS = (case when A.OVERTIME*A.OVERTIME_WAGES <= 15 then 5
                        when A.OVERTIME*A.OVERTIME_WAGES <= 20 then 7
                        else 10 
                   end);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top