Oracle DBA/SQL

20230626 (3) SQL 035 : IF문을 SQL로 구현하기 2(CASE)

Nuez 2023. 6. 26. 09:41
반응형

DECODE는 동등(equal) 비교만 가능

CASE는 동등 비교 뿐만 아니라 non equal 비교도 가능하다. 

 

구조 

 

CASE WHEN 조건1 THEN 출력 결과

           WHEN 조건2 THEN 출력 결과

                                  :

                                  :

            ELSE 그외 출력 결과 END


문제 142. 이름, 월급, 보너스를 출력하는데 월급이 3000이상이면 보너스를 9000을 출력하고, 월급이 1000 이상이고 3000보다 작으면 보너스를 2000을 출력하고, 나머지 사원들은 0을 출력하시오. 

SELECT ename, sal, CASE WHEN sal >= 3000 THEN 9000
                        WHEN sal >= 1000 THEN 2000 
                        ELSE 0 END AS 보너스
FROM emp;


문제 143. 이름, 부서번호, 보너스를 출력하는데, 부서번호가 10번이면 보너스를 9000 출력하고, 부서번호가 20번이면 6000을 출력하고, 나머지는 0을 출력하시오. 

SELECT ename, deptno, CASE WHEN deptno = 10 THEN 9000
                           WHEN deptno = 20 THEN 6000
                           ELSE 0 END AS 보너스
FROM emp;
SELECT ename, deptno, CASE deptno WHEN 10 THEN 9000
                                  WHEN 20 THEN 6000
                                  ELSE 0 END AS 보너스
FROM emp;


문제 144. 이름, 커미션, 보너스를 출력하는데 커미션이 null이면 보너스를 9000을 출력하고, 커미션이 null이 아니면 보너스를 5000을 출력하시오. 

SELECT ename, comm, CASE WHEN comm IS NULL THEN 9000 
                         ELSE 5000 END AS 보너스
FROM emp;