[Oracle] 같은 문제에 DECODE 와 CASE WHEN THEN 적용해보기

    직원들의 급여를 인상시켜서 조회
    직급코드가 J7인 사원은 급여를 10%로 인상해서 조회
              J6인 사원은 급여를 15%로 인상해서 조회
    직급코드가 J5인 사원은 급여를 20%로 인상해서 조회 
    그 외의 직급 사원들은 급여를 5%로 인상해서 조회

     

    DECODE 사용

    SELECT EMP_NAME, JOB_CODE, SALARY"기존급여" ,
                    DECODE(JOB_CODE, 'J7', SALARY * 1.1
                    , 'J6', SALARY * 1.15
                    , 'J5' ,SALARY * 1.2 
                    , SALARY * 1.05 ) "인상된급여"
    FROM EMPLOYEE;
    
    
    [결과값]
    
    
    선동일	J1	8000000	8400000
    송종기	J2	6000000	6300000
    노옹철	J2	3700000	3885000
    송은희	J4	2800000	2940000
    유재식	J3	3400000	3570000
    

     

    CASE WHEN THEN 사용

     

    접근1)

    SELECT EMP_NAME,JOB_CODE,SALARY "기존급여", 
    CASE WHEN JOB_CODE = 'J7' THEN SALARY * 1.1
            WHEN JOB_CODE = 'J6' THEN SALARY * 1.15
            WHEN JOB_CODE = 'J5' THEN SALARY * 1.2
                        END SALARY * 1.05 "인상된급여"
    FROM EMPLOYEE;
    

     FROM~ 에서 오류가 발생했다고 하는데 어떤 게 문제인지 모르겠다..ㅎ

    => 별칭 전에 END 기술한 거랑 ELSE 기술 하지 않은 부분 수정하기

     

     

    접근2)

    ELSE 구문과 END를 추가적으로 기술했다.

    SELECT EMP_NAME,JOB_CODE,SALARY "기존급여", 
    CASE WHEN JOB_CODE = 'J7' THEN SALARY * 1.1
                WHEN JOB_CODE = 'J6' THEN SALARY * 1.15
                 WHEN JOB_CODE = 'J5' THEN SALARY * 1.2
                ELSE SALARY * 1.05
                END  "인상된급여"
    FROM EMPLOYEE;
    
    [결과값]
    선동일	J1	8000000	8400000
    송종기	J2	6000000	6300000
    노옹철	J2	3700000	3885000
    송은희	J4	2800000	2940000
    유재식	J3	3400000	3570000

     

    728x90

    댓글