SELECT에서 쓰는 다양한 표현
CASE WHEN 표현식을 사용한 조건부 데이터 변환
CASE
표현식: SQL 내에서IF-THEN-ELSE
와 유사한 조건부 로직을 구현하여 데이터를 변환하거나 특정 값을 표시할 때 사용.- 기본 구조:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE default_result
ENDELSE default_result
는 선택 사항이며, 생략 시 조건에 맞지 않으면NULL
반환.
- 활용:
- 데이터 값을 특정 카테고리로 분류 (예: 신용등 급에 따른 위험군 분류)
- 조건에 따라 다른 계산 수행
- 출력 형식 변경
단순 CASE 표현식
- 단순 CASE 표현식: CASE 비교대상 WHEN 값1 THEN 결과1 ... END (특정 컬럼 값이 특정 값과 일치하는지 비교할 때 간결하게 사용 가능)
SELECT
CASE COMPANY_TYPE_CAT -- 기업 분류가
WHEN '대기업' THEN '대' -- 대기업이면 대
WHEN '중소기업' THEN '중소' -- 중소기업이면 중소
ELSE '기타' END -- 이외는 기타
AS 분류
FROM TB_COMPANY_MASTER;
검색 CASE 표현식
- 조건문을 사용
- 예시:
TB_CREDIT_INFO
테이블에서CREDIT_GRADE
에 따라 '우량', '보통', '주의'로 분류하기
SELECT BIZ_REG_NO, CREDIT_GRADE,
CASE
WHEN CREDIT_GRADE IN ('AAA', 'AA+', 'AA', 'AA-') THEN '매우 우량'
WHEN CREDIT_GRADE IN ('A+', 'A', 'A-') THEN '우량'
WHEN CREDIT_GRADE IN ('BBB+', 'BBB', 'BBB-') THEN '보통'
WHEN CREDIT_GRADE IN ('BB+', 'BB', 'BB-') THEN '주의'
ELSE '관리 필요'
END AS "신용도 평가"
FROM TB_CREDIT_INFO
WHERE CREDIT_INFO_TYPE_CD = 'GRADE' AND CREDIT_INFO_STAT_CD = 'ACTIVE';
DISTINCT 키워드로 중복 행 제거
DISTINCT
의 역할:SELECT
문으로 조회된 결과에서 완전히 동일한 행들을 하나만 남기고 제거.- 사용 위치:
SELECT
키워드 바로 뒤에 명시. - 문법:
SELECT DISTINCT column1, column2, ...
FROM table_name;
-
DISTINCT
는 명시된 모든 열의 조합을 기준으로 중복을 판단. -
TB_COMPANY_MASTER
테이블에서COMPANY_TYPE_CAT
(기업구분범주값)의 종류만 조회 (중복 제거)
SELECT DISTINCT COMPANY_TYPE_CAT
FROM TB_COMPANY_MASTER;
TB_LOAN_ACCOUNT
테이블에서 여신을 받은 회사들의BIZ_REG_NO
(사업자등록번호) 목록 조회 (중복 제거)
SELECT DISTINCT BIZ_REG_NO
FROM TB_LOAN_ACCOUNT;