기본 사용법
if문 방식
비교 연산자 (>,<,=,<>), NULL 연산자 (IS NULL, IS NOT NULL)을 사용하여 조건을 부여할 수 있으며, 논리 연산자 (AND, OR)를 사용하여 여러 개의조건을 부여할 수 있다.
ELSE 부분은 생략이 가능하며 생략할 경우 조건에 맞지 않으면 NULL을 반환한다.
SELECT employee_id
, first_name
, job_id
, CASE WHEN job_id = 13 THEN 'CLERK'
WHEN job_id = 14 THEN 'MANAGER'
ELSE 'N/A'
END AS [job_title]
FROM employees
WHERe department_id IN (1, 3)
switch문 방식
SELECT employee_id
, first_name
, CASE job_id
WHEN 13 THEN 'CLERK'
WHEN 14 THEN 'MANAGER'
ELSE 'N/A'
END AS [job_title]
FROM employees
WHERE department_id = 3
고급 사용법
조건을 여러 개 부여하는 방법
논리 연산자 (AND, OR)를 사용하여 여러 개의 조건을 조합해서 사용할 수 있다.
SELECT employee_id
, first_name
, job_id
, CASE WHEN department_id = 3 AND job_id = 13 THEN 'CLERK'
WHEN department_id = 3 AND job_id = 14 THEN 'MANAGER'
END AS [job_title]
FROM employees
WHERE department_id IN (1, 3)
WHERE 절에 사용하는 방법
WHERE 절에도 CASE 표현식을 사용할 수 있다. 인덱스 컬럼에 CASE 표현식 사용하면 쿼리 문의 속도에 영향을 미치므로 주의해야 한다. 단순 필터링 용도로만 사용해야 한다.
SELECT employee_id
, first_name
, job_id
, salary
FROM employees
WHERE department_id IN (1, 3)
AND (CASE WHEN salary >= 4000 THEN 1
WHEN salary >= 3000 THEN 2
WHEN salary >= 2000 THEN 3
END) = 1
CASE 표현식을 중첩으로 사용하는 방법
중첩해서 사용할 경우 쿼리 문의 가독성이 떨어질 수 있으므로 주의해서 사용해야한다
SELECT employee_id
, first_name
, department_id
, salary
, CASE department_id
WHEN 1 THEN
CASE WHEN salary >= 4000 THEN '1등급'
WHEN salary >= 3000 THEN '2등급'
WHEN salary >= 2000 THEN '3등급'
END
WHEN 3 THEN
CASE WHEN salary >= 4000 THEN '1등급'
WHEN salary >= 3000 THEN '2등급'
WHEN salary >= 2000 THEN '3등급'
END
END AS [salary_grade]
FROM employees
WHERE department_id IN (1, 3)
'프로그래밍 언어 > SQL' 카테고리의 다른 글
[SQL] UNION / UNION ALL / UNION DISTINCT (1) | 2024.10.15 |
---|---|
[SQL] CASE WHEN 조건 여러개 (다중 조건, 다중 칼럼) (0) | 2024.08.21 |
[SQL] 별칭 (Alias) 활용하기 (0) | 2024.08.15 |
[SQL] 피봇에 대해 알아보자 (PIVOT, UNPIVOT) (0) | 2024.08.12 |
MS SQL IDE (Server Management Studio) 설치 및 오류 해결 (0) | 2024.08.12 |