초급의 끄적거림

[SQL] case when ~ then end 구문 / decode() 함수 본문

DB/Oracle

[SQL] case when ~ then end 구문 / decode() 함수

codingD 2019. 7. 25. 09:38

[case when ~ then end 구문]

⊙ 형식 

 case when 조건1 then 조건만족시 값1
        when 조건2 then 조건만족시 값2
        when 조건3 then 조건만족시 값3
                       .   .   .
        else 값                                        - case 에 나오는 조건이 없을 경우 default값이라고 보면 됨
 end 결과칼럼명                                    - 결과칼럼명에 한글 넣을 경우 " " 사용

 

⊙ 문1) 국어점수에 따라 A, B, C, D, F 학점을 구하시오

 select uname, kor, CASE when kor>=90 then 'A학점'

                                 when kor>=90 then 'B학점'

                                 when kor>=90 then 'C학점'

                                 when kor>=90 then 'D학점'

                                 else 'E학점

                                 end "학점"

 from sungjuk;

 

 

⊙ 문2) addr 칼럼의 주소를 한글로 조회하시오

select uname, addr, CASE when addr='Seoul' then '서울'

                                 when addr='Jeju' then '제주'

                                 when addr='Suwon' then '수원'

                                 when addr='Busan' then '부산'

                                 end address

 from sungjuk;

 

 

 

⊙ 문3) 부서코드 10 경리팀, 20 연구팀, 30 총무팀, 40 전산팀

 select ename, deptno, CASE when detpno=10 then '경리팀'

                                      when detpno=20 then '연구팀'

                                      when detpno=30 then '총무팀'

                                      when detpno=40 then '연구팀'

                                      END deptname

 from sungjuk;

 

 

 

 

⊙ 문4) 커미션 5이상 '5%' 4이상 '4%' 3이상 '3%' 2이상 '2%' 나머지 '없음'

 select ename, deptno, sal, CASE when nvl(comm,0)>=5 then '5%'

                                           when nvl(comm,0)>=4 then '4%'

                                           when nvl(comm,0)>=3 then '3%'

                                           when nvl(comm,0)>=2 then '2%'

                                           else '없음'

                                           END bonus

 from emp;

 

 

 

[decode() 함수]

 ⊙ 값을 비교하여 해당하는 값을 돌려주는 함수. 단, 비교시에는 정확히 같은 값 (=)만 비교가 가능

decode (A, B, 같을 때의 값, 다를 때의 값)

 

 

 select ename, deptno, decode(deptno, 10, '경리팀'

                                                   , 20, '연구팀'

                                                   , 30, '총무팀') 부서

 from emp;

 

'DB > Oracle' 카테고리의 다른 글

[SQL] 학사프로그램 inner join 활용  (0) 2019.07.29
[SQL] 학사관리프로그램 만들기  (0) 2019.07.26
[SQL] join 1  (0) 2019.07.24
[SQL] Index  (0) 2019.07.24
[SQL] View  (0) 2019.07.23
Comments