oracle中关于case when then的小解析

1.首先创建两个表emp,emp_bonus如下:
(1)emp_bonus:
在这里插入图片描述
(2)emp:
在这里插入图片描述
2.首先对emp_bonus表进行操作:

select emp_bonus.*,(case when empno=7934 then 0
            when empno=7839 then 1 else -1
           end) as asd from emp_bonus

效果:
在这里插入图片描述
可见case when then 的作用或者效果是根据条件重新添加了一列!其实这一列可以的多表关联中进行其他有效的操作。
3.如,员工的奖金根据emp_bonus中的type来计算,type=1则工资的10%作为奖金,type=2则工资的20%作为奖金,以此类推……现在要求返回10号部门的员工工资及奖金:


select e.deptno,e.deptno,e.ename,e.sal,
    (e.sal*case 
      when eb.type=1 then 0.1
      when eb.type=2 then 0.2
      when eb.type=3 then 0.3 end) as bonus from emp e inner join emp_bonus eb on(e.empno=eb.empno) and e.deptno=10

在这里插入图片描述
可见,两表关联后的bonus列进行了操作……

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值