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;