simDev1234
심플하고 차분하게
simDev1234
전체 방문자
오늘
어제
  • 분류 전체보기
    • Computer Science
      • Basic Math
      • Data Structure
      • Algorithm
      • Database
      • OS
    • Language
      • Java
      • Kotlin
      • SQL
    • Framework
      • Spring
      • Orm&Mapper
      • 프로젝트로 스프링 이해하기
      • 스프링 라이브러리
    • Infra
      • Cloud
      • Docker
      • Redis
      • AWS, Azure
      • Device
    • Etc
      • CleanCoding
    • Git,Github

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 404
  • JVM메모리구조
  • 컨트롤러
  • 참조타입
  • 참조변수
  • 스프링
  • 자바프로그래밍
  • null
  • 자바
  • 자바메모리구조
  • controllerTest
  • 자바프로그램
  • scanner #next() #nextLine()

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
simDev1234

심플하고 차분하게

Language/SQL

[DATABASE] DECODE, CASE~END 문

2022. 4. 18. 22:39

■ 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
    'Language/SQL' 카테고리의 다른 글
    • [DATABASE] DB모델링, 정규화와 이상현상, 역정규화
    • [DATABASE] 뷰 (VIEW), 인라인 뷰
    • [DATABASE] 정렬(ORDER NY) 및 그룹 통계(GROUP BY)
    • [DATABASE] SELECT쿼리 진행 순서, 서브쿼리
    simDev1234
    simDev1234
    TIL용 블로그. * 저작권 이슈가 있는 부분이 있다면 댓글 부탁드립니다.

    티스토리툴바