[Oracle] CASE WHEN 조건 여러개 (다중 조건, 다중 칼럼)
- 데이터베이스/오라클
- 2023. 8. 3.
오라클 쿼리문에서 CASE WHEN 표현식의 조건을 여러개 부여하기 위해서는 WHEN~THEN을 반복해서 사용할 수 있으며, 다중 조건을 부여할 수 있다. 하나의 조건절(WHEN~THEN)에서 여러개 칼럼을 조건으로 부여하기 위해서는 AND, OR 연산자를 사용하면 된다.
목차 |
CASE WHEN 조건 여러개 부여 (다중 조건)
SELECT ename
, job
, CASE WHEN job = 'ANALYST' THEN 'CASE 1'
WHEN job = 'MANAGER' THEN 'CASE 2'
WHEN job = 'SALESMAN' THEN 'CASE 3'
END AS case_result
FROM emp
WHERE job IN ('ANALYST', 'MANAGER', 'SALESMAN')
CASE 표현식에서 여러개의 조건을 부여하기 위해서는 WHEN ~ THEN 구문을 반복해서 사용하면 된다.
WHEN~THEN 구문을 처음부터 순차적으로 값을 비교하여 일치하는 조건이 있으면 THEN 이후 값을 반환 후 더 이상 값을 비교하지 않고 종료한다.. 일치하는 조건이 없을 경우 NULL을 반환한다.
CASE WHEN 여러개 칼럼 조건 부여 (다중 칼럼)
SELECT ename
, job
, deptno
, sal
, CASE WHEN job = 'ANALYST' AND deptno = 20 AND sal >= 3000 THEN 'CASE 1'
WHEN job = 'MANAGER' AND deptno = 10 AND sal >= 2000 THEN 'CASE 2'
WHEN job = 'SALESMAN' AND deptno = 30 AND sal >= 1500 THEN 'CASE 3'
END AS case_result
FROM emp
WHERE job IN ('ANALYST', 'MANAGER', 'SALESMAN')
여러개의 칼럼을 비교하는 조건을 부여해야 할 경우 AND 연산자를 사용하여 조건을 부여하면 된다.
모든 칼럼의 AND 조건을 만족해야 해당 값을 반환한다.
OR 연산자를 사용하여 여러개의 칼럼 조건 부여
SELECT ename
, job
, deptno
, sal
, CASE WHEN job = 'ANALYST' OR deptno = 20 OR sal >= 3000 THEN 'CASE 1'
WHEN job = 'MANAGER' OR deptno = 10 OR sal >= 2000 THEN 'CASE 2'
WHEN job = 'SALESMAN' OR deptno = 30 OR sal >= 1500 THEN 'CASE 3'
END AS case_result
FROM emp
WHERE job IN ('ANALYST', 'MANAGER', 'SALESMAN')
여러개의 칼럼을 OR 연산자로 조건을 부여할 수 있으며, OR 조건 중 하나만 만족해도 해당 값을 반환하고 WHEN~THEN 조건 탐색을 종료한다.
JONES(MANAGER)는 첫 번째 CASE 조건 deptno = 20 만족하기 때문에 "CASE 1"을 반환하였다.