티스토리 뷰

Database/Oracle

[오라클] 재밌는 퀴즈 2

데브포유 2009. 5. 8. 13:50
반응형

1과 2를 입력받아 1일때는 특정 컬럼이 'D'인것 만 출력하고
2일때는 D가 아닌 것을 출력.
입력값은 :V_VALUE 로 받을 것고 IF문을 사용할 수 있는 PL/SQL를 배제한
순수한 SQL로만 작성할 것.

T: T_SAMPLE
C: STATUS

1. 입력값이 1일 경우
SELECT *
FROM T_SAMPLE
WHERE STATUS = 'D'

2. 입력값이 2일 경우
SELECT *
FROM T_SAMPLE
WHERE STATUS !='D'

.
.
.
.
.
.
.
.
.
.
.
.
.
.
언뜻 생각하면 간단하지만 막상해볼려고 하면 잘 안되더군요.(제 경우)
아직 내공이 많이 부족하나 봅니다.
1시간의 고민 끝에 해결하니 허무하군요. 너무 간단해서 ㅠㅠ

SELECT *
FROM T_SAMPLE
WHERE STATUS = DECODE(:V_VALUE, 1, 'D', DECODE(STATUS, 'D', NULL,
                                                                                STATUS));
=> 1일 때는 'D'로 해서 STATUS = 'D' 인 조건을 만족하게 하고
     1이 아니면 현재 커서의 STATUS 값이 'D'면 NULL로 만들어 비교할 수 없게하고
     'D'가 아니면 그대로 STATUS = STATUS 가 되어 참이 되므로 원하는 결과를
     출력할 수가 있습니다.






반응형