with tt as (
SELECT 'A' cd, 1 car_ton_cd, 50000 sale_amt FROM dual union all
SELECT 'B' cd, 1 car_ton_cd, 30000 sale_amt FROM dual union all
SELECT 'C' cd, 5 car_ton_cd, 50000 sale_amt FROM dual union all
SELECT 'D' cd, 5 car_ton_cd, 90000 sale_amt FROM dual union all
SELECT 'E' cd, 1 car_ton_cd, 50000 sale_amt FROM dual
)
select * from tt
where sale_amt >= case when car_ton_cd <= 3 then 40000 else 80000 end
간단한 퀴리입니다.
car_ton_cd가 3이하일때는 sale_amt가 40000이상이고,
car_ton_cd가 4이상일때는 sale_amt가 80000이상인 데이터를 뽑아내려고 만든 쿼리인데,
결과는 영 이상하게 나오네요..
A,D,E가 나와야 정상인데.. C,D가 나옵니다.
왜그럴까요?
|