오늘은 원하는 값이 없다면 CASE WHEN ~ 문을 활용하여 직접 정의한 열로 만드는 학습을 진행할 예정입니다.
1. case문
- 함수가 아닌 표현식의 일종으로 하나 혹은 그 이상의 값과 여러 연산자 함수들을 조합해 조건을 만드는 것이며, 넓은 범위 활용이 가능
- CASE WHEN 특정 칼럼의 조건과 일치 / THEN 처리결과(입력 값, 칼럼) ELSE 다른결과 END
2. DECODE문 - 사용 방법이 간단하나, 동등 비교 조건에서만 사용이 가능하며 오라클에서만 활용 가능
- DECODE(조건칼럼, 조건1, 반환결과1, 조건2, 반환결과2)
[단일 조건에 사용]
1.
SELECT department_id
, DECODE(department_id, 100, 1, 0) AS CHK1
, CASE WHEN department_id=100 Then 1 ELSE 0 END CHK2
//department_id가 100이면 1을 아니면 0을 반환
FROM employees;
[다중 조건에 사용]
SELECT department_id
,DECODE(department_id, 90, 'A그룹', 60, 'B그룹', 100, 'C그룹', 'D그룹') AS CHK1
//찾을 정보를 먼저 작성 후 비교 값과 반환 값을 차례대로 작성
,CASE WHEN department_id = 90 then 'A그륩'
WHEN department_id = 60 then 'B그륩'
WHEN department_id = 100 then 'B그륩'
ELSE 'D그룹' end CHK2
//각 조건에 대해서 when/then 작성
// dpeartment_id가 90이면 A그룹 / 60이면 B그룹 / 100이면 C그룹 / 나머지는 D그룹
FROM employees;
//정확한 값 지정이 아니라 범위를 지정하고 싶을 경우에는?
1. DECODE는 범위 지정이 불가능하므로 사용할 수 없음 (True or False)
>> CASE문 사용해야 함
SELECT department_id
,CASE WHEN department_id >= 90 then 'A그륩'
WHEN department_id <90 then 'B그륩'
ELSE '대기발령' >>But, CASE문의 경우 null 값에 대한 처리가 필요함
end CHK2
//각 조건에 대해서 when/then 작성
// dpeartment_id가 90보다 크거나 같으면 A그룹 / 90보다 작으면 B그룹
FROM employees;
오늘은 CASE문과 DECODE문에 대해서 간단하게 알아 봤는데요! 각각이 단일 조건 / 다중 조건 모두 사용이 가능하지만 DECODE의 경우에는 사용 가능한 경우를 잘 따져보고 사용해야 할 것 같네요:)
오늘의 학습은 여기서 마치겠습니다!

'공부 자료 > SQL' 카테고리의 다른 글
| [17일차] 그룹함수의 이해 part 1. 원하는 값 만들기 (0) | 2023.01.17 |
|---|---|
| [16일차] SQL의 작성 접근방법 (0) | 2023.01.16 |
| [14일차] 조작함수 사용하기 part4. 날짜 및 그룹 함 (0) | 2023.01.14 |
| [13일차] 조작함수 사용하기 part3. 데이터 정의 함수 (0) | 2023.01.13 |
| [12일차] 조작함수 사용하기 part2-2. 문자 함수 (0) | 2023.01.12 |