2014-05-22 5 views
-1

나는 특정 쿼리를 통해 특정 수량을 기준으로 올바른 레코드를 선택하는 방법에 대해 숙고 해 왔습니다.Oralce 올바른 레코드를 선택하는 쿼리

샘플 테이블은

select b.* from 
(
    SELECT 100 as min_qty, '50' as price, '123' as itemfrom dual 
    UNION ALL 
    SELECT 150 as min_qty, '200' as price , '123' as item from dual 
    UNION ALL 
    SELECT 200 as min_qty, '300' as price, '123' as item from dual 
    UNION 
     SELECT 50 as min_qty, '300' as price, '345' as item from dual 
    UNION ALL 
    SELECT 150 as min_qty, '200' as price , '345' as item from dual 
    UNION ALL 
    SELECT 300 as min_qty, '100' as price, '345' as item from dual 

    ) b 

그래서, 질문 항목이 345이고, 수량이 240 인 경우 가격이 무엇인지가는 다음과 같이인가?

내 설명에 대해 미안하지만, 영어는 그렇게 좋지 않습니다.

+0

@TechDo가 더 읽기하고 감사 할 것 – laurent

답변

0

하나의 옵션은

SELECT price 
    FROM (SELECT min_qty, 
       item, 
       price, 
       lead(min_qty) over (partition by item 
             order by min_qty) max_qty 
     FROM your_table) 
WHERE item = '345' 
    AND 240 between min_qty and max_qty 
관련 문제