CASE WHEN 조건 여러개 부여 (다중 조건)
CASE 표현식에서 여러개의 조건을 부여하기 위해서는 WHEN ~ THEN 구문을 반복해서 사용하면 된다.
WHEN~THEN 구문을 처음부터 순차적으로 값을 비교하여 일치하는 조건이 있으면 THEN 이후 값을 반환 후 더 이상 값을 비교하지 않고 종료한다.. 일치하는 조건이 없을 경우 NULL을 반환한다.
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 여러개 칼럼 조건 부여 (다중 칼럼)
여러개의 칼럼을 비교하는 조건을 부여해야 할 경우 AND 연산자를 사용하여 조건을 부여하면 된다.
모든 칼럼의 AND 조건을 만족해야 해당 값을 반환한다.
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')
OR 연산자를 사용하여 여러개의 칼럼 조건 부여
여러개의 칼럼을 OR 연산자로 조건을 부여할 수 있으며, OR 조건 중 하나만 만족해도 해당 값을 반환하고 WHEN~THEN 조건 탐색을 종료한다.
JONES(MANAGER)는 첫 번째 CASE 조건 deptno = 20 만족하기 때문에 "CASE 1"을 반환하였다.
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')
'프로그래밍 언어 > SQL' 카테고리의 다른 글
[SQL] 보안, 권한 부여 grant, revoke, role (0) | 2024.10.15 |
---|---|
[SQL] UNION / UNION ALL / UNION DISTINCT (1) | 2024.10.15 |
[SQL] CASE WHEN 표현식 사용법 (DECODE, IF) (0) | 2024.08.21 |
[SQL] 별칭 (Alias) 활용하기 (0) | 2024.08.15 |
[SQL] 피봇에 대해 알아보자 (PIVOT, UNPIVOT) (0) | 2024.08.12 |