2

Oracle で、次のリストを返すクエリがあるとします。

ID     Sequence#
12        1
15        3
25        5

この場合、私が知っているのは、いくつかの行の ID (12 としましょう) だけです。この場合は 3 (id = 15) である次のシーケンス番号を持つ行の ID を返す必要があります。

どうすればいいですか?Oracle 関数があることは知っていますleadが、正常に実装できませんでした。

4

3 に答える 3

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
于 2012-11-09T16:52:02.660 に答える
1
SELECT * FROM table1 where ID in (SELECT min(ID) FROM table1 WHERE ID > 12)
于 2012-11-09T16:51:34.773 に答える
0
Select sequence from my_ table where id=(select min(id) from my_table where sequence> 1)

上記のクエリの (1) を、次に検索する任意の値に置き換えます

于 2012-11-09T16:54:01.807 に答える