CoDream

[SQL] 선택함수 (DECODE, CASE) 본문

[DB]Oracle SQL/Oracle SQL 이론

[SQL] 선택함수 (DECODE, CASE)

코잠 2024. 3. 23. 12:22
728x90
반응형

<선택함수>

여러 가지 경우에 선택을 할 수 있는 기능을 제공하는 함수이다.

 

DECODE

  • [문법] DECODE(칼럼|계산식, 조건값 1, 결과값 1, 조건값 2, 결과값 2, ..., 결과값)
    • 비교하고자 하는 값이 조건값과 일치할 경우 그에 해당하는 결과값을 반환해 주는 함수이다.
    SELECT
    EMP_NAME
    , DEPT_CODE
    , DECODE(DEPT_CODE , 'D1', '개발1팀','D2','개발2팀','D9','영업1팀')AS 부서명
    FROM EMPLOYEE;
    
    SELECT
        EMP_NAME
        , JOB_CODE AS 직급코드
        , DECODE(
        JOB_CODE
        ,'J1','대표'
        ,'J2','부사장'
        ,'J3','부장'
        ,'J4','과장'
        ,'J5','차장'
        ,'J6','대리'
        ,'J7','사원'
        )AS 직급
    FROM EMPLOYEE;
    

 

 

CASE

  1. DECODE[문법] DECODE(칼럼|계산식, 조건값 1, 결과값 1, 조건값 2, 결과값 2, ..., 결과값)
    • 비교하고자 하는 값이 조건값과 일치할 경우 그에 해당하는 결과값을 반환해 주는 함수이다.
    SELECT
    EMP_NAME
    , DEPT_CODE
    , DECODE(DEPT_CODE , 'D1', '개발1팀','D2','개발2팀','D9','영업1팀')AS 부서명
    FROM EMPLOYEE;
    
    SELECT
        EMP_NAME
        , JOB_CODE AS 직급코드
        , DECODE(
        JOB_CODE
        ,'J1','대표'
        ,'J2','부사장'
        ,'J3','부장'
        ,'J4','과장'
        ,'J5','차장'
        ,'J6','대리'
        ,'J7','사원'
        )AS 직급
    FROM EMPLOYEE;
    
  2. CASE

    [문법] CASE WHEN 조건식 1 THEN 결과값 1

              WHEN 조건식 2 THEN 결과값 2 ...

              ELSE 결과값 N

              END

 

-- 사원명, 직급코드, 직급명 조회(직급명은 아무렇게나)
SELECT 
    EMP_NAME
    , JOB_CODE
    , CASE 
        WHEN JOB_CODE = 'J1' THEN '대표'
        WHEN JOB_CODE = 'J2' THEN '부사장'
        WHEN JOB_CODE = 'J3' THEN '부장'
        WHEN JOB_CODE = 'J4' THEN '차장'
        WHEN JOB_CODE = 'J5' THEN '과장'
        WHEN JOB_CODE = 'J6' THEN '대리'
        WHEN JOB_CODE = 'J7' THEN '사원'
        ELSE '해당없음'
   END AS 직급
FROM EMPLOYEE;



-- 사원명, 월급, 초급 중금 고급 특급 구분 (급여 )
SELECT 
    EMP_NAME
    , SALARY
    , CASE 
        WHEN SALARY <= 3000000 THEN '초급'
        WHEN SALARY <= 5000000 THEN '중급'
        WHEN SALARY <= 7000000 THEN '고급'
        ELSE  '특'
   END AS 구분
FROM EMPLOYEE
ORDER BY SALARY DESC;



-- 사원명 , 주민번호, 성별조회
SELECT
    EMP_NAME
    , EMP_NO
    , CASE 
    WHEN EMP_NO LIKE '_______1%' THEN '남성'
    WHEN EMP_NO LIKE '_______2%' THEN '여성'
--    ,WHEN SUBSTR(EMP_NO, 8,1) IN(1,3) THEN '남성'
--    ,WHEN SUBSTR(EMP_NO, 8,1) IN(2,4) THEN '여성'
END AS 성별
FROM EMPLOYEE
ORDER BY SALARY DESC;

 

  •  
728x90
반응형

'[DB]Oracle SQL > Oracle SQL 이론' 카테고리의 다른 글

[SQL] GROUP BY (그룹화)  (1) 2024.03.23
[SQL] 그룹 함수  (0) 2024.03.23
[SQL] NULL 처리 함수  (0) 2024.03.23
[SQL] 형변환 함수  (1) 2024.03.23
[SQL] 단일행 함수 > 날짜 함수  (0) 2024.03.23