编号  姓名      职称          到职日     薪水    季奖金 7788  SCOTT    ANALYST    1982/12/9     3,000    1,500    ☆
7839  KING     PRESIDENT  1981/11/17   5,000    5,000 
7844  TURNER   SALESMAN   1981/9/8     1,500    1,500 
7876  ADAMS    CLERK      1983/1/12     1,100    1,100    ☆季奖金: 1982/1/1(含)以后到职者只能拿半薪, 但员工Clerk不受此限制, 仍能拿到全部奖金季奖金 =
      如果到职日 > 1982-1-1 并且职称 <> clerk  则拿到工资的一半做季奖金
      其它人员 则可以拿到全部工资做为季奖金
用select 来怎么实现?最主要就是季奖金如何判断?

解决方案 »

  1.   

    select 编号,姓名,case when 到职日>=to_date('19820101','yyyymmdd') or 职称='CLERK'
    then 季奖金 else 季奖金/2 end 季奖金 from table.
      

  2.   

    有个条件错了
    select 编号,姓名,case when 到职日<to_date('19820101','yyyymmdd') or 职称='CLERK'
    then 季奖金 else 季奖金/2 end 季奖金 from table.
      

  3.   

    Do is my self SELECT sum(
    CASE WHEN  HIREDATE <= TO_DATE('19820101','yyyymmdd') OR JOB='CLERK' THEN
    SAL
    ELSE
    SAL/2
    END 
    ) 季獎金計合
    FROM Table