oracle中case when使用
case...when 条件转换函数 case when有两种表现形式 1 case 变量 when 值1 then 结果1 when 值2 then 结果2 else '其它' end --else可以选择不要 示例: select ename,job,( case job when 'MANAGER' then job when 'CLERK' then job end) from emp; 2 case when 表达式1 then 结果1 when 表达式2 then 结果2 else '其它' end 示例: select ename,sal, case when deptno=10 then '会计部' when deptno=20 then '研究部' when deptno=30 then '销售部' else '其它部门' end from emp; --在case when中当前面条件筛选过后,后面是从前面剩下的数据中再抽取。 --以scott用户下面emp表为例。 --在进行第二中方法时需要考虑到顺序。 SQL> select t.*,case when t.sal>=3000 then '[3000' 2 when t.sal<3000 and t.sal>=2500 then '[2500-3000' 3 when t.sal<2500 and t.sal>=1500 then '[1500-2500' 4 else '<1500' end as sal_level 5 ,case when t.sal>=3000 then '[3000' 6 when t.sal>=2500 then '[2500-3000' 7 when t.sal>=1500 then '[1500-2500' 8 else '<1500' end as sal_level_test 9 from emp t; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO SAL_LEVEL SAL_LEVEL_TEST ----- ---------- --------- ----- ----------- --------- --------- ------ ---------- -------------- 7369 SMITH CLERK 7902 1980/12/17 800.00 20 <1500 <1500 7499 ALLEN SALESMAN 7698 1981/2/20 1600.00 300.00 30 [1500-2500 [1500-2500 7521 WARD SALESMAN 7698 1981/2/22 1250.00 500.00 30 <1500 <1500 7566 JONES MANAGER 7839 1981/4/2 2975.00 20 [2500-3000 [2500-3000 7654 MARTIN SALESMAN 7698 1981/9/28 1250.00 1400.00 30 <1500 <1500 7698 BLAKE MANAGER 7839 1981/5/1 2850.00 30 [2500-3000 [2500-3000 7782 CLARK MANAGER 7839 1981/6/9 2450.00 10 [1500-2500 [1500-2500 7788 SCOTT ANALYST 7566 1987/4/19 3000.00 20 [3000 [3000 7839 KING PRESIDENT 1981/11/17 5000.00 10 [3000 [3000 7844 TURNER SALESMAN 7698 1981/9/8 1500.00 0.00 30 [1500-2500 [1500-2500 7876 ADAMS CLERK 7788 1987/5/23 1100.00 20 <1500 <1500 7900 JAMES CLERK 7698 1981/12/3 950.00 30 <1500 <1500 7902 FORD ANALYST 7566 1981/12/3 3000.00 20 [3000 [3000 7934 MILLER CLERK 7782 1982/1/23 1300.00 10 <1500 <1500