在Oracle的返回列表中的下行值,假設我有一個返回下面的列表中選擇查詢:獲取基於行
ID Sequence#
12 1
15 3
25 5
我只知道在這種情況下,一些列的ID(我們假設12 ),我需要返回具有下一個序列號的行的ID(在本例中爲3)(id = 15)
我該怎麼做?我知道有一個Oracle功能lead
,但我無法成功地阻止。
在Oracle的返回列表中的下行值,假設我有一個返回下面的列表中選擇查詢:獲取基於行
ID Sequence#
12 1
15 3
25 5
我只知道在這種情況下,一些列的ID(我們假設12 ),我需要返回具有下一個序列號的行的ID(在本例中爲3)(id = 15)
我該怎麼做?我知道有一個Oracle功能lead
,但我無法成功地阻止。
SELECT * FROM table1 where ID in (SELECT min(ID) FROM table1 WHERE ID > 12)
是的,您可以使用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
Select sequence from my_ table where id=(select min(id) from my_table where sequence> 1)
與任何值以上的查詢,你正在尋找它的下一個
這是個好主意,我用同樣的概念替換(1),但序列號,和我我需要什麼 – Victor