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 40534 게시물 읽기
No. 40534
중복된 건 조회시 특정조건은 제외하고 한건만 조회하는법
작성자
김승유(kimshoo84)
작성일
2014-07-22 16:56ⓒ
2014-07-22 17:01ⓜ
조회수
7,235

이런형태의 테이블 구조인경우

 

COST COST_TYPE

 

10 YY

20 AA

30 AF

40 YZ

 

WHERE절에서 앞에 COST_TYPE = 'YY'는 고정이고 두번째 COST_TYPE이 변수로 들어옵니다.

아래쿼리를 실행했을경우

 

SELECT COST

FROM t

WHERE (COST_TYPE = 'YY' OR COST_TYPE = 'AA')

 

결과값이

 

10

20

 

이렇게 나오는데

한건이 조회될 경우 그대로 놔두고

두줄일경우 뒤에 변수로 설정된 COST_TYPE이 'AA'인 한건만 출력해서 보여주고싶습니다.

 

즉 결과값이 20만 나왔으면 좋겠습니다.

 

SELECT COST

FROM t

WHERE (COST_TYPE = 'YY' OR COST_TYPE = 'YZ')

 

결과값이

 

10

40

 

원하는 결과값은 COST_TYPE이 'YY'가 아닌 40

 

============================================================

아래와 같은 구조로 바꾸는게 가장 나은걸까요?

 

select * from

(

select * from

(

SELECT 1 as num, COST

FROM t

WHERE COST_TYPE = 'AA'

union all

SELECT 2 as num, COST

FROM t

WHERE COST_TYPE = 'YY'

)

order by num

)

where rownum < 2

 

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

-- YY 의 코스트가 가장 낮다고 가정하면...
SELECT MAX(cost) cost
  FROM t
 WHERE cost_type IN ('YY', 'AA')
;

마농(manon94)님이 2014-07-22 18:03에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
40537PL/SQL 질문 있습니다. [4]
신종민
2014-07-23
6997
40536쿼리 문의 드립니다. [1]
정기훈
2014-07-23
7240
40535connct by 상위 연결 문제 [1]
마당쇠
2014-07-23
7804
40534중복된 건 조회시 특정조건은 제외하고 한건만 조회하는법 [1]
김승유
2014-07-22
7235
40533표준편차 쿼리 관련 질문 [6]
quest
2014-07-22
9260
40532서버에 win7pro 설치하고 오라클 사용하면...
임철수
2014-07-21
7253
40531그룹 순서별로 묶는것에 대해 문의드립니다. [2]
김태경
2014-07-21
7242
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.023초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다