条件分支—CASE表达式和DECODE函数

CASE表达式单条件(单列)来走分支

看下面的加薪语句
SQL> SELECT last_name, job_id, salary,
  2         CASE job_id WHEN 'IT_PROG'  THEN  1.10*salary
  3                     WHEN 'ST_CLERK' THEN  1.15*salary
  4                     WHEN 'SA_REP'   THEN  1.20*salary
  5         ELSE      salary END     "REVISED_SALARY"
  6  FROM   employees;

1.CASE表达式

通过使用类似IF-THEN-ELSE语句的方法实现条件执行

 

CASE表达式多条件(条件有优先级)来走分支

department_id = 10表示是核心部门
job_id in ('ST_CLERK','SA_REP')表示重要岗位
sysdate-hire_date >4745是老员工
看下面的加薪语句
SQL> ed
已写入 file afiedt.buf
  1  SELECT last_name, job_id, salary,
  2         CASE WHEN department_id = 10 THEN  1.3*salary
  3                     WHEN job_id in ('ST_CLERK','SA_REP') THEN  1.2*salary
  4                     WHEN sysdate-hire_date >4745  THEN  1.10*salary
  5         ELSE      salary END     "REVISED_SALARY"
  6* FROM   employees
SQL> /

 

2.DECODE函数

类似于SWITCH……CASE
SELECT last_name, job_id, salary,
       DECODE(job_id, 'IT_PROG',  1.10*salary,
                      'ST_CLERK', 1.15*salary,
                      'SA_REP',   1.20*salary,
              salary)
       REVISED_SALARY
FROM   employees;

转载于:https://www.cnblogs.com/simplefrog/archive/2012/07/15/2592404.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值