2012-11-09 2 views
2

의 반환 목록에 따라 다음 행의 값을 취득, 나는 다음과 같은 목록을 반환하는 쿼리가 있다고 가정오라클에서 행

ID  Sequence# 
12  1 
15  3 
25  5 

나는이 경우 알고있는 모든 일부 행의 ID입니다 (의 12 가정하자), 다음 시퀀스 번호 (이 경우 3 (id = 15))가있는 행의 ID를 반환해야합니다.

어떻게해야합니까? 나는 오라클 함수 lead을 알고 있지만 성공적으로 임프레션을 수행 할 수 없었습니다.

답변

1
SELECT * FROM table1 where ID in (SELECT min(ID) FROM table1 WHERE ID > 12) 
+0

, 나도 같은 개념을 다음 사용의를 검색하는 값으로 위의 쿼리에서 (1) 교체,하지만 순서 번호에, 나는 얻었다 내가 필요한 것 – Victor

2

예, lead 함수를 사용하여 다음 값을 얻을 수 있습니다. 그것이 어떻게 행해질 수 있는지에 대한 예가 있습니다.

-- sample of data from your question 
SQL> with t1(ID, Sequence#) as 
    2 (
    3 select 12, 1 from dual union all 
    4 select 15, 3 from dual union all 
    5 select 25, 5 from dual 
    6 ) 
    7 select * 
    8 from (select id 
    9    , sequence# 
10    , lead(sequence#) over(order by id) next_sequence# 
11    , lead(id) over(order by id) next_id# 
12   from t1 
13  ) 
14 where id = 12 
15 ; 

     ID SEQUENCE# NEXT_SEQUENCE# NEXT_ID# 
---------- ---------- -------------- ---------- 
     12   1    3   15 
0
Select sequence from my_ table where id=(select min(id) from my_table where sequence> 1) 

당신이

좋은 생각이야