カーソルを返すストアドプロシージャがあります。Oracle Pl/sqlは複数のクエリから1つのカーソルを返します
アプリケーションは、取得するIDの数を決定するプロシージャにパラメータを渡します。したがって、プロシージャはその時間の先頭を知りません。
foreach IDこのIDを持つ上位3レコードを取得する必要があります。 私が使用して試してみました何:
はselect * from table_name where id in (List of ID`s);
そのクエリが動作しますが、私は、各IDのトップ3を得るカント。結果の数を制限すると、最初のIDのTOP結果が得られます。
Forループを使用して各IDのクエリを実行し、結果をカーソルに追加することを考えましたが、理解できないので、それは不可能です。
すべてのアイデア?
詳細 私は5 ID s and each of them have inner Id
秒を持っていると言うことができますので イド1は(1,2,3,4,5)IDが2(1,2,3,4,5)同上3 (12,14,15,16,22)Id 4(2,3,5,7,9)Id 5(4,7,8,9,10) このケースでは、私は行番号が私を助ける方法を見ていない。 IDごとにトップ3が必要です。この場合、カーソルには15の結果が必要です。
10倍たくさんと良い週末を持っている;)
私は各IDのセパレーションの上位3を決定する方法があります。 –
@Udi l:これは、分析/ランキング/ウィンドウ関数の 'PARTITION BY id'部分(この場合はROW_NUMBER)と同じです。 –
ソルーションは完璧に動作します。私が必要とするものです。 10倍。 –