CASE 문
조건을 주고 진행할 때, 하나의 컬럼으로 인식된다.
CASE
WHEN (조건 1) THEN 반환1
WHEN (조건 2) THEN 반환2
WHEN (조건 3) THEN 반환3
....
ELSE 모든 조건 반환 못할시 기본값
END
SELECT ename, job, sal
,CASE
WHEN job = 'SALESMAN' THEN sal * 1.05 -- 세일즈맨 5%
WHEN job = 'MANAGER' THEN sal * 1.10 -- 매니저 10%
WHEN job = 'PRESIDENT' THEN sal * 1.20 -- 사장 20%
ELSE sal * 1
END bonus
FROM emp;
SELECT empno, ename,
CASE
WHEN deptno = 10 THEN 'ACCOUNTING'
WHEN deptno = 20 THEN 'RESEARCH'
WHEN deptno = 30 THEN 'SALES'
WHEN deptno = 40 THEN 'OPERATIONS'
ELSE 'DDIT'
END DNAME
FROM emp;
DECODE 문
조건에 따라 반환 값이 달라지는 함수
(단, 비교연산 (=)만 가능)
DECODE(기준값[col|expression]
, 비교값1, 반환1,
, 비교값2, 반환2,
, 비교값3, 반환3,
......
, 그외 반환[없을경우 NULL])
SELECT ename, job, sal,
**DECODE(job, 'SALESMAN', sal * 1.05
, 'MANAGER', sal * 1.10
, 'PRESIDENT', sal * 1.20
, sal * 1) bonus
FROM emp;**
실습
-- 중첩 case SELECT ename, job, sal,deptno ,CASE WHEN job = 'SALESMAN' THEN sal * 1.05 -- 세일즈맨 5% WHEN job = 'MANAGER' THEN CASE WHEN deptno = 30 THEN sal * 1.5 ELSE sal * 1.10 END -- 매니저 10% WHEN job = 'PRESIDENT' THEN sal * 1.20 -- 사장 20% ELSE sal * 1 END bonus FROM emp;-- 중첩 DECODE SELECT ename, job, sal, DECODE(job, 'SALESMAN', sal *1.05, 'MANAGER' , DECODE(deptno, 30 , sal * 1.5 , sal * 1.1 ), 'PRESIDENT', sal*1.20, sal *1) bonus FROM emp;-- hiredate 기준 건강검진 대상자 찾기 SELECT empno, ename, hiredate, DECODE( MOD(TO_CHAR(SYSDATE, 'YYYY'),2) , 0, CASE WHEN MOD(TO_CHAR(hiredate, 'YYYY'),2) = 0 THEN '건강검진 대상자' ELSE '건강검진 비대상자' END , CASE WHEN MOD(TO_CHAR(hiredate, 'YYYY'),2) = 1 THEN '건강검진 대상자' ELSE '건강검진 비대상자' END ) contact FROM emp; --텍스트는 '' 로 묶기 ""아님 --AS는 맨 마지막거에만 써주면된다. END 뒤에 여러번쓰는거아 --MOD(제수, 피제수) 인자2개 -- 간단 SELECT empno, ename, hiredate, DECODE( MOD(TO_CHAR(SYSDATE, 'YYYY'),2) ,MOD(TO_CHAR(hiredate, 'YYYY'),2), '건강검진 대상자', '건강검진 비대상자') contact FROM emp; SELECT userid, usernm, ' ' alias , reg_dt, DECODE( MOD(TO_CHAR(SYSDATE, 'YYYY'),2) ,MOD(TO_CHAR(reg_dt, 'YYYY'),2), '건강검진 대상자', '건강검진 비대상자') contact_to_doctor FROM users;
반응형
'IT > SQL' 카테고리의 다른 글
| [ORACLE / ANSI] JOIN (0) | 2020.07.02 |
|---|---|
| [ORACLE] GROUP BY 함수 (0) | 2020.07.01 |
| [ORACLE] NULL 관련 함수 (0) | 2020.06.30 |
| [ORACLE] 형변환 / 실행계획 / 국제화 i18n (0) | 2020.06.30 |
| [ORACLE] 문자열 함수, 숫자 관련 함수, 날짜 관련 함수 (0) | 2020.06.30 |