■ DECODE 문
형식 : DECODE(필드(연산식), 비교값1, 결과값1,
비교값2, 결과값2,
비교값3, 결과값3,
기본값)
CREATE TABLE MEMBER
(
IDX NUMBER(38),
DEPTNO NUMBER(10),
NAME CHAR(4 CHAR),
GENDER CHAR(3 CHAR)
);
/* INSERT 생략 */
SELECT
IDX, DEPTNO, NAME,
DECODE(DEPTNO, 10, '총무부',
20, '영업부',
30, '전산실',
40, '관리부',
'경리부') AS DEPTNAME;
■ CASE ~ END 문
CASE ~ END
-- 형식 1 : 하나의 조건에 대한 값을 비교하여 결과를 얻는다.
CASE 필드(연산식)
WHEN 비교값1 THEN 결과값1
WHEN 비교값2 THEN 결과값2
WHEN 비교값3 THEN 결과값3
ELSE 기본값
END
-- 형식2 : 각각의 조건에 대한 별개의 결과를 얻는다.
CASE
WHEN 조건1 THEN 결과값1
WHEN 조건2 THEN 결과값2
ELSE 기본값
END
-- 형식 1 : 하나의 조건에 대한 값을 비교하여 결과를 얻는다.
CASE 필드(연산식)
WHEN 비교값1 THEN 결과값1
WHEN 비교값2 THEN 결과값2
WHEN 비교값3 THEN 결과값3
ELSE 기본값
END
--CASE ~END문 이용해서 부서명 출력
SELECT
SABUN,
SANAME,
DEPTNO,
CASE DEPTNO
WHEN 10 THEN '총무부'
WHEN 20 THEN '영업부'
WHEN 30 THEN '전산실'
WHEN 40 THEN '관리부'
ELSE '경리부'
END AS DNAME
FROM SAWON
---형식2 : 각각의 조건에 대한 별개의 결과를 얻는다.
CASE
WHEN 조건1 THEN 결과값1
WHEN 조건2 THEN 결과값2
ELSE 기본값
END
--CASE ~END 문 이용해서 성별 추출
SELECT
GOBUN,
GONAME,
GOJUMIN,
CASE
WHEN SUBSTR(GOJUMIN,8,1) IN ('1', '3', '5', '7', '9') THEN '남자'
WHEN SUBSTR(GOJUMIN,8,1) IN ('2', '4', '6', '8', '0') THEN '여자'
END AS GENDER
FROM GOGEK;
SELECT
GOBUN,
GONAME,
GOJUMIN,
CASE
WHEN TO_NUMBER(SUBSTR(GOJUMIN,8,1)) IN (1,3,5,7,9) THEN '남자'
WHEN TO_NUMBER(SUBSTR(GOJUMIN,8,1)) IN (2,4,6,8,0) THEN '여자'
END AS GENDER
FROM GOGEK;
-- Q1. 사원테이블에서 사번, 이름, 입사시즌(입사계절)을 추출
SELECT
SABUN AS 사번,
SANAME AS 이름,
CASE FLOOR(TO_NUMBER(TO_CHAR(SAHIRE,'MM'))/3)
WHEN 1 THEN '봄'
WHEN 2 THEN '여름'
WHEN 3 THEN '가을'
ELSE '겨울'
END AS 입사시즌
FROM SAWON
-- Q2. 고객테이블에서 고객번호, 고객이름, 고객의 출생 계절 추출
-- [형식1]
SELECT
GOBUN,
GONAME,
CASE FLOOR(TO_NUMBER(SUBSTR(GOJUMIN,3,2))/3)
WHEN 1 THEN '봄'
WHEN 2 THEN '여름'
WHEN 3 THEN '가을'
ELSE '겨울'
END AS 출생계절
FROM GOGEK;
-- [형식2]
SELECT
GOBUN,
GONAME,
GOJUMIN,
CASE
WHEN SUBSTR(GOJUMIN,3,2) IN ('03','04','05') THEN '봄'
WHEN SUBSTR(GOJUMIN,3,2) IN ('06','07','08') THEN '여름'
WHEN SUBSTR(GOJUMIN,3,2) IN ('09','10','11') THEN '가을'
ELSE '겨울'
END 출생계절
FROM GOGEK
'Language > SQL' 카테고리의 다른 글
[DATABASE] DB모델링, 정규화와 이상현상, 역정규화 (0) | 2022.04.19 |
---|---|
[DATABASE] 뷰 (VIEW), 인라인 뷰 (0) | 2022.04.19 |
[DATABASE] 정렬(ORDER NY) 및 그룹 통계(GROUP BY) (0) | 2022.04.18 |
[DATABASE] SELECT쿼리 진행 순서, 서브쿼리 (0) | 2022.04.17 |
[DATABASE] 중복 값 제거 _ DISTINCT (0) | 2022.04.16 |