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 가 되어 참이 되므로 원하는 결과를
출력할 수가 있습니다.
반응형