database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41684 게시물 읽기
No. 41684
where절에 조건문으로 비교연산자를 사용하고싶습니다.
작성자
도토리(dododori)
작성일
2019-01-23 16:25ⓒ
2019-01-23 16:28ⓜ
조회수
2,979

안녕하세요. 혼자 끙끙대다가 안되겠다 싶어서 이렇게 질문 납깁니다.

기존 쿼리에 where절에 맨 마지막줄에 조회된 데이터중에서 여러 컬럼 값을 계산하여 계산된 값이 0보다 큰 경우에만

조회가 되도록 되어있었습니다.

where ...

...

and (value1 + value2 + value3) > 0

이런식으로요~ 

이번에 조건 몇가지가 추가되면서 특정컬럼의 값에따라서 0보다 같거나 큰 경우의 데이터도 같이 조회가 되도록 수정해야하는데

어떻게 구현해야될지 몰라서요.

쉽게 말하면 where절 안에서

a = 1 인경우에는 

and (value1 + value2 + value3) >= 0

a != 1 인경우에는 기존과 동일하게

and (value1 + value2 + value3) >0

이렇게요. Case문은 결과값으로만 구현이 되니 사용이 어렵고, IF문은 where절 내에 사용이안되니 어떻게 구현해야될지 모르겠어요.

구글링해보니 if문을 where절에 and와 or 연산자로 구현하는 방법으로해서

and ((a=1) and ((value1+value2+value3) >= 0)) or ((a!=1) and ((value1+value2+value3) > 0)) 이렇게 사용해봤는데 안되네요..

아시는분 답변 부탁드립니다.

이 글에 대한 댓글이 총 2건 있습니다.

1. OR 사용시 괄호가 틀렸네요.
  - 각각의 조건을 괄호로 묶고
  - 다시 또 전체 조건을 괄호로 묶어 줘야 합니다.
 WHERE ...
   AND ...
   AND ( ( a  = 1 AND (value1+value2+value3) >= 0 ) OR
         ( a != 1 AND (value1+value2+value3) >  0 ) )
;
2. 계산 결과가 정수라면? 소수가 없다면?
  -  Case 나 Decode 문 활용도 가능하겠네요.
 WHERE ...
   AND ...
   AND (value1+value2+value3) >= CASE WHEN a = 1 THEN 0 ELSE 1 END
   AND (value1+value2+value3) >= DECODE(a, 1, 0, 1)
;
3. 계산 결과에 음수가 없다면?
  -  이런 방법도 가능합니다.
 WHERE ...
   AND ...
   AND ( a = 1 OR (value1+value2+value3) > 0 )
;

마농(manon94)님이 2019-01-24 10:13에 작성한 댓글입니다.
이 댓글은 2019-01-24 10:56에 마지막으로 수정되었습니다.

 마농님 답변 정말로 감사합니다^^ 제가 괄호를 잘못작성했군요...

 

도토리(dododori)님이 2019-01-24 11:18에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41688정수끼리 나눌때 소숫점 얻는방법 [2]
조경현
2019-01-30
2495
41687날짜구간의 시간구하기 [3]
블루이글
2019-01-30
2816
41686rman 에서 아카이브 5개만 남기고 삭제하기..
허겅스
2019-01-26
2334
41684where절에 조건문으로 비교연산자를 사용하고싶습니다. [2]
도토리
2019-01-23
2979
41683오라클11과 오라클 12 [2]
신승익
2019-01-23
2932
41682join의 조건보다 where 구문의 조건이 먼저 읽혀 발생하는 문제... [1]
조인씨
2019-01-22
2597
41680무료 오라클 관리툴인 DBAny 2019 버전 발표!
박희성
2019-01-12
2524
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.050초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다