Oracle 之 case when 用法大全

本文详细介绍了 SQL 中 case when 语句的基本使用方法,包括条件判断与赋值、与 sum 函数及 group by 结合使用进行数据聚合分析等高级技巧。通过具体示例展示了如何根据不同条件对数据进行分类和汇总。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本用法:case -- when -- then -- when --then --else

select  case when ename in ('SMITH','WARD') then 1 
        when ename = 'ALLEN' then 2 else  3 end  AAAA,
         case when mgr IN( 9000,7782) then 4 
        when mgr = 8000 then 5 else 6 end  BBBB
from emp

===================================================

sum -- case when -- then -- when -- then --else  配合:group by

select SAL,SUM(case when ename in ('SMITH','WARD') then 1 
        when ename = 'ALLEN' then 2 else  3 end)  AAAA,
        SUM(case when mgr IN( 9000,7782) then 4 
        when mgr = 8000 then 5 else 6 end) BBBB
from emp
GROUP BY SAL;

====================================================

group by 后面跟 case when

SELECT 

CASE WHEN sal <= 500 THEN '1'
WHEN sal > 500 AND sal <= 1300  THEN '2'
WHEN sal > 1300 AND sal <= 2200  THEN '3'
WHEN sal > 2200 AND sal <= 6000 THEN '4'
ELSE NULL END sal_class,
COUNT(*)
FROM    emp
GROUP BY
CASE WHEN sal <= 500 THEN '1'
WHEN sal > 500 AND sal <= 1300  THEN '2'
WHEN sal > 1300 AND sal <= 2200  THEN '3'
WHEN sal > 2200 AND sal <= 6000 THEN '4'

ELSE NULL END;

==============================================

select ename,sal,case job when 'CLERK' then sal+100
                             when 'SALESMAN' then sal+200
                             when 'MANAGER' then sal+300
                             when 'ANALYST' then sal+400
                             when 'PRESIDENT' then sal+500
   end 涨后工资 from emp;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值