티스토리 뷰
DECODE
IF문과 비슷한 의미
DECODE(A, B, 'C') : A와 B가 같다면 'C'를 출력한다.
DECODE 함수 안에 DECODE 함 수를 중첩해서 사용 할 수도 있다.
CASE-WHEN
DECODE와 비슷하지만 비교연산을 할 수 있다는 장점이 있고, 조건을 만족하면 값이 아닌 쿼리를 수행 할 수도 있다.
EX ) WHEN 100 = (SELECT 98 FROM DUAL) THEN
DUAL은 의미하는게 없다.
실습1 : 직업이 AD_PRESS 인 사람은 A 등급을,
ST_MAN 인 사람은 B 등급을,
IT_PROG 인 사람은 C 등급을,
SA_REP 인 사람은 D 등급을,
ST_CLEAK 인 사람은 E 등급을
기타는 0 을 부여하여 조회한다.
이를 DECODE와 CASE-WHEN을 이용하여 풀어 볼 수 있다.
1. DECODE를 이용한 풀이
1
2
3
4
5
6
7
8
9
10
11 |
SELECT EMPLOYEE_ID
,LAST_NAME
,DECODE(JOB_ID
, 'AD_PRESS', 'A'
, 'ST_MAN', 'B'
, 'IT_PROG', 'C'
, 'SA_REP', 'D'
, 'ST_CLEAK', 'E'
, '0') JOB_GRADE
FROM EMPLOYEES
WHERE JOB_GRADE = 'B' -- VIEW나 TABLE에 존재하지 않는 컬럼은 조회할 수 없으므로 VIEW가 필요하다. |
cs |
2. DECODE와 VIEW를 사용 1번의 제한을 해결
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 |
SELECT *
FROM (
SELECT EMPLOYEE_ID
,LAST_NAME
,DECODE(JOB_ID
, 'AD_PRESS', 'A'
, 'ST_MAN', 'B'
, 'IT_PROG', 'C'
, 'SA_REP', 'D'
, 'ST_CLEAK', 'E'
, '0') JOB_GRADE
FROM EMPLOYEES
)
WHERE JOB_GRADE = 'B'
; |
cs |
3. CASE-THEN 을 이용한 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 |
SELECT ROWNUM
,EMPLOYEE_ID
,LAST_NAME
, CASE JOB_ID
WHEN 'AD_PRESS' THEN
'A'
WHEN 'ST_MAN' THEN
'B'
WHEN 'IT_PROG' THEN
'C'
WHEN 'SA_REP' THEN
'D'
WHEN 'ST_CLEAK' THEN
'E'
ELSE '0'
END
FROM EMPLOYEES
; |
cs |
ROWNUM 은 줄 번호를 출력한다.
'Database > Oracle' 카테고리의 다른 글
[Oracle] INSERT, UPDATE, DELETE (0) | 2016.02.23 |
---|---|
[Oracle] EXISTS (0) | 2016.02.18 |
[Oracle] VIEW (0) | 2016.02.18 |
[Oracle] 테이블 조인 (0) | 2016.02.17 |
[Oracle] 테이블(Table) 설계 (0) | 2016.02.17 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- sort
- RequestMapping
- 예외처리
- 자바
- BFS
- DFS
- DP
- AlertDialog.Builder
- algorithm
- onBackPressed
- Baekjoon Online Judege
- servlet
- indexOf
- 안드로이드 스튜디오
- 안드로이드 비콘
- mybatis
- onPostExecute
- 이클립스
- maven
- Spring
- order by
- restfb
- jsp
- boj
- controller
- REDIRECT
- java
- list
- table
- INSERT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함