-- CASE - END : 조건에 따라 실행을 달리 함
--금액별 세금 매기기
SELECT name, basicpay, sudang,
CASE
WHEN basicpay + sudang >= 3000000 THEN 0.03 --기본급과 수당의 합이 3백만원이 넘으면 3%를
WHEN basicpay + sudang >= 2000000 THEN 0.02 --2백만원이 넘으면 2%를
ELSE 0.01 --그 외에는 모두 1%를 부과한다
END * (basicpay + sudang) 세금 -- 각 조건에 해당하는 수치를 END에 적용시킨다. 여기서 수식이 없었다면 0.03과 같이 그냥 찍힘.
FROM insa;
-- 주의 시작과 끝
SELECT SYSDATE,
CASE
WHEN TO_CHAR(SYSDATE, 'DAY') = '일요일'
THEN SYSDATE -- WHEN 오늘이 일요일이면 THEN 그대로 찍고 아니면 ELSE 지나간 최근 일요일 계산해서 찍어라.
ELSE NEXT_DAY(SYSDATE, 1) - 7 -- NEXT_DAY(SYSDATE,1) 가 명시된 요일인 일요일이 돌아오는 날을 계산함. 여기서 7일을 뺴주면 지나간 최근 일요일이 찍힌다.
END 주시작,
CASE
WHEN TO_CHAR(SYSDATE,'DAY') = '토요일'
THEN SYSDATE
ELSE NEXT_DAY(SYSDATE, 7)
END 주끝
FROM DUAL;
-- name, ssn, 성별(주민번호기준) 출력
SELECT name, ssn,
CASE
WHEN SUBSTR(ssn, 8, 1) IN (1,3,5)
THEN '남자'
WHEN SUBSTR(ssn, 8, 1) IN (2,4,6) -- 조건문으로 비교하면 무조건 WHEN으로 써야한다 (ELSE는 조건문도 THEN도 올 수 없다.) 위 예제 ELSE는 수식이다.
THEN '여자'
END 성별
FROM insa;
-- WHEN SUBSTR(ssn,8,1) =2 OR SUBSTR(ssn,8,1)=3 THEN'남자' -- CASE 문장을 쓰지않고 이조건문을 사용해도 된다.
'오라클' 카테고리의 다른 글
오라클 ORDER BY : 정렬 (0) | 2013.05.30 |
---|---|
오라클 NULL : 값이 존재하지 않는 상태 (0) | 2013.05.30 |
오라클 날짜 표현 (0) | 2013.05.30 |
3.변환,절삭,나머지,반올림 (0) | 2013.05.29 |
2.스칼라 함수 (단일행) (0) | 2013.05.29 |