oracle的case when写法学习

case when 语句可以在SQL语句中实现IF..ELSE
语法上有两种操作:
语法一:
CASE EXPRESSION WHEN EXPRESSION1 THEN VAL1
                WHEN EXPRESSION2 THEN VAL2
                WHEN EXPRESSION3 THEN VAL3
                ..
                WHEN EXPRESSIONN THEN VALN
    END ;
语法二:
CASE WHEN EXPRESSION1 THEN VAL1
                WHEN EXPRESSION2 THEN VAL2
                WHEN EXPRESSION3 THEN VAL3
                ..
                WHEN EXPRESSIONN THEN VALN
    END ;
例:常见的一种面试题:在SCOTT模式下的EMP表中,将DEPT=10的员工工资变为原来的0.8倍,
DEPT=20的员工工资变为原来的1.2倍,DEPT=300的员工工资变为原来的1.5倍
语法一:
SQL> SELECT ENAME, JOB, HIREDATE, deptno,sal,
2         CASE DEPTNO WHEN 10 THEN SAL * 0.8
3              WHEN 20 THEN sal*1.2
4              WHEN 30 THEN sal*1.5
5         END
6   FROM emp ;

ENAME      JOB       HIREDATE    DEPTNO       SAL CASEDEPTNOWHEN10THENSAL*0.8WHE
---------- --------- ----------- ------ --------- ------------------------------
SMITH      CLERK     1980-12-17      20    800.00                            960
ALLEN      SALESMAN 1981-02-20      30   1600.00                           2400
WARD       SALESMAN 1981-02-22      30   1250.00                           1875
JONES      MANAGER   1981-04-02      20   2975.00                           3570
MARTIN     SALESMAN 1981-09-28      30   1250.00                           1875
BLAKE      MANAGER   1981-05-01      30   2850.00                           4275
CLARK      MANAGER   1981-06-09      10   2450.00                           1960
SCOTT      ANALYST   1987-04-19      20   3000.00                           3600
KING       PRESIDENT 1981-11-17      10   5000.00                           4000
TURNER     SALESMAN 1981-09-08      30   1500.00                           2250
ADAMS      CLERK     1987-05-23      20   1100.00                           1320
JAMES      CLERK     1981-12-03      30    950.00                           1425
FORD       ANALYST   1981-12-03      20   3000.00                           3600
MILLER     CLERK     1982-01-23      10   1300.00                           1040
语法二:
SQL> SELECT ENAME, JOB, HIREDATE, deptno,sal,
2         CASE WHEN DEPTNO = 10 THEN SAL * 0.8
3              WHEN deptno =20 THEN sal*1.2
4              WHEN deptno =30 THEN sal*1.5
5         END
6   FROM emp ;

ENAME      JOB       HIREDATE    DEPTNO       SAL CASEWHENDEPTNO=10THENSAL*0.8WH
---------- --------- ----------- ------ --------- ------------------------------
SMITH      CLERK     1980-12-17      20    800.00                            960
ALLEN      SALESMAN 1981-02-20      30   1600.00                           2400
WARD       SALESMAN 1981-02-22      30   1250.00                           1875
JONES      MANAGER   1981-04-02      20   2975.00                           3570
MARTIN     SALESMAN 1981-09-28      30   1250.00                           1875
BLAKE      MANAGER   1981-05-01      30   2850.00                           4275
CLARK      MANAGER   1981-06-09      10   2450.00                           1960
SCOTT      ANALYST   1987-04-19      20   3000.00                           3600
KING       PRESIDENT 1981-11-17      10   5000.00                           4000
TURNER     SALESMAN 1981-09-08      30   1500.00                           2250
ADAMS      CLERK     1987-05-23      20   1100.00                           1320
JAMES      CLERK     1981-12-03      30    950.00                           1425
FORD       ANALYST   1981-12-03      20   3000.00                           3600
MILLER     CLERK     1982-01-23      10   1300.00                           1040
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值