이런형태의 테이블 구조인경우
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
|