728x90
CASE WHEN 조건식1 THEN 결과데이터1
WHEN 조건식2 THEN 결과데이터2
WHEN 조건식3 THEN 결과데이터3
ELSE 결과데이터
END
SELECT empno, ename, deptno,
CASE WHEN deptno=10 THEN 'ACCOUNTING'
WHEN deptno=20 THEN 'RESEARCH'
WHEN deptno=30 THEN 'SALES'
ELSE 'OPERATIONS'
END 부서명,
CASE WHEN mod(empno,2)=0 THEN '짝수'
WHEN mod(empno,2)=1 THEN '홀수'
END 사원번호 FROM emp;
Simple case expression
SELECT t.id, CASE t.color WHEN 1 THEN 'RED'
WHEN 2 THEN 'BLUE'
WHEN 3 THEN 'GREEN'
ELSE 'NoColor' END AS Color
FROM test t;
Searched case expression
SELECT t.id, CASE WHEN t.color= 1 THEN 'RED'
WHEN t.color= 2 THEN 'BLUE'
WHEN t.color= 3 THEN 'GREEN'
ELSE 'NoColor' END AS Color
FROM test t;
- 색상이 있는 것 또는 색상이 없는 것으로 보길 원한다면
*Searched Case문 사용시
SELECT t.id, CASE WHEN t.color IS NULL THEN 'No Color' ELSE 'Colored' END IsColred
FROM test t;
*Simple Case문 사용시
--> 단순 케이스문에서는 컬럼값과 WHEN값을 비교연산하기에 NULL과는 연산이 불가능하여 무조건 ELSE값만 나오게된다.
SELECT t.id, CASE t.color WHEN NULL THEN 'No Color' ELSE 'Colored' END IsColred
FROM test t;
--> 따라서 Simple case문에서 사용할방법. NVL, ISNULL 사용
SELECT t.id, CASE NVL(t.color,-10) WHEN -10 THEN 'No Color' ELSE 'Colored' END IsColred
FROM test t;
SELECT t.id, CASE ISNULL(t.color,-10) WHEN -10 THEN 'No Color' ELSE 'Colored' END IsColred
FROM test t;
'Web develop > SQL' 카테고리의 다른 글
[SQL/ORACLE] 서브쿼리 , 다중행 서브쿼리 연산자 (0) | 2019.06.15 |
---|---|
[SQL/ORACLE] ORACLE JOIN & ANCI JOIN (0) | 2019.06.15 |
[SQL/ORACLE] 그룹함수, DECODE 함수 (1) | 2019.05.29 |
[SQL/ORACLE] 날짜 함수 , 형변환 함수 (0) | 2019.05.28 |
[SQL/ORACLE] 숫자 함수, 문자 함수 (0) | 2019.05.28 |