오라클) where 문의입니다! 0 2 2,118

by 생택쥐포도 [Oracle 기초] [2023.03.30 11:06:00]


with t as
(
select '1' no_seq, 'a' da  from dual union all
select '1' no_seq, 'b' da  from dual union all
select '2' no_seq, 'a' da  from dual union all
select '3' no_seq, 'a' da  from dual union all
select '3' no_seq, 'b' da  from dual union all
select '4' no_seq, 'a' da  from dual union all
select '5' no_seq, 'a' da  from dual union all
select '5' no_seq, 'b' da  from dual union all
select '6' no_seq, 'b' da  from dual 
)
select
no_seq, da
from t
WHERE no_seq <= '5' 

--OR (no_seq = '5' AND da <> 'b') ?

 

5이하의 숫자만 가져오는데

이때 숫자가 5이면서 b는 제거하고 나머지만 가지고오고싶어요!

by 마농 [2023.03.30 11:10:09]

no_seq 의 자료형이 문자 맞나요? 혹시 숫자 아닌지?
- 숫자라면? 따옴표가 없어야 하구요.
- 문자라면? 자리수가 1자리만 있지는 않을 듯 한데요?
- 가변 자리수라면? 문자 '20' 이 '5' 보다 작습니다.
- 이부분 감안하셔야 합니다.
- 문자인 경우 어떤 결과가 나와야 하는지요?

-- 숫자라고 가정하고 풀어 보면 --
WITH t AS
(
SELECT 1 no_seq, 'a' da FROM dual
UNION ALL SELECT 1, 'b' da FROM dual
UNION ALL SELECT 2, 'a' da FROM dual
UNION ALL SELECT 3, 'a' da FROM dual
UNION ALL SELECT 3, 'b' da FROM dual
UNION ALL SELECT 4, 'a' da FROM dual
UNION ALL SELECT 5, 'a' da FROM dual
UNION ALL SELECT 5, 'b' da FROM dual
UNION ALL SELECT 6, 'b' da FROM dual
)
SELECT *
  FROM t
 WHERE no_seq <= 5
   AND NOT (no_seq = 5 AND da = 'b') -- NOT 이용
   AND (no_seq != 5 OR da != 'b') -- NOT 을 괄호 안으로 풀어서 넣으면
;

 


by 생택쥐포도 [2023.03.30 13:06:53]

앗 숫자입니다! 감사합니다 ㅎㅎ

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입