본문 바로가기

DB Query/자주쓰는 함수

CASE WHEN

728x90
반응형

# CASE

- SQL에서 조건절

예제는 아래와 같다.

구분열의 값이 2보다 크면 값2의 열의 값을, 구분열의 값이 2보다 작거나 같으면 값1 열의 값을 추출

SELECT CASE WHEN 구분>2
            THEN 값2
            ELSE 값1
       END
FROM 구분;

- 예제1

SELECT C1,
       C2,
       CASE
              WHEN "C1" = '서울'
              THEN '100'
              ELSE '-100'
       END "C3"
FROM   TABLE_NAME;

- 예제 2

SELECT C1,
       C2,
       CASE
              WHEN "C1" = '서울'
              THEN '100'
              ELSE '0'
       END "구분_서울",
       CASE
              WHEN "C1" = '인천'
              THEN '200'
              ELSE '0'
       END "구분_인천",
       CASE
              WHEN "C1" = '부산'
              THEN '300'
              ELSE '0'
       END "구분_부산"
FROM   AA;

- 설명

CASE WHEN 조건절 THEN 참에대한 결과값
        WHEN 조건절 THEN 참에대한 결과값
        ................
        ELSE 거짓에 대한 결과 값
END

조건절 : 결과 값을 추출하기 위한 조건을 표현하는 부분

참에 대한 결과 값 : 조건절의 값을 만족하는 데이터에 대한 결과 값을 설정

거짓에 대한 결과 값  : 모든 조건절의 값을 만족하지 않는 데이터에 대한 결과 값 설정

- CASE WHEN THEN 으로 값 구하기

SELECT "기관",
       "시스템",
       "주기", 
       "유형",
       "테이블 수",
       CASE
              WHEN "시스템"     = '회계시스템'
              AND    "유형" = 'A'
              THEN 
              (SELECT SUBSTR(DH,6,3) 
              FROM   TABLE_NAME 
              WHERE  CODE         = '001' 
              AND    CONTENT             = 'Service' 
              AND    SUBSTR(WRK_BGN_DH,0,6) = '202309' 
              AND    ROWNUM                 = 1)
      ELSE
              '가짜'
      END "수신일자"
      FROM STATISTICS;

POSTGRE 예제

 

728x90
반응형