問題があり、その解決策を見つけることができません。私は先週PL/SQLで作業を始めました。つまり、私の能力は非常に限られています。それは変更を必要しかし2つのカーソルを使用してPL/SQLを表示する方法
select
'7' as M_ID,
N_PROT as SUBSCRIPTION_VERSION_ID,
/* ..... bunch of other business logic */
from N_TRANS
where (CORA in ('0215','0320') or CORA in ('0215', '0320'))
and N_PROT IS NOT null;
を検索するだけで、最後のID(S_ID)NUMBER(N_PROT)によってグループ化:
とにかく、私は別のものに、エクスポートするテーブルを書式設定作業のスクリプトを持っていました。だから、私はNUMBER(N_PROT)によってテーブルから最後のID(S_ID)グループを検索するために別のseparetedのスクリプトをした:
declare
cursor S_CURS IS
select
max(S_ID) keep(dense_rank LAST order by N_PROT) S_ID,
NR_PROTOCOLO
from N_TRANS
group by N_PROT
order by S_ID;
S_HIST_T S_CURS%ROWTYPE;
type NTT_S_HIST_TRANS is table of S_HIST_T%type;
LLL_S_HIST_TRANS NTT_S_HIST_TRANS;
begin
open S_CURS;
fetch S_CURS bulk collect into LLL_S_HIST_TRANS;
close S_CURS;
for indxx in 1..LLL_S_HIST_TRANS.count loop
--The IDs as a var
DBMS_OUTPUT.PUT_LINE(LLL_S_HIST_TRANS(indxx).S_HIST_T);
end loop;
end;
と問題は、私は、この2つのスクリプトに参加する方法です。それを解決するための1つの方法は、で、2番目のスクリプト(¹)のループ内で最初のスクリプトを実行することでした。
declare
cursor S_CURS IS
select
...
begin
...
for indxx in 1..LLL_S_HIST_TRANS.count loop
--The IDs as a var
select
'7' as M_ID,
N_PROT as SUBSCRIPTION_VERSION_ID,
/* ..... bunch of other business logic */
from N_TRANS
where (CORA in ('0215','0320') or CORA in ('0215', '0320'))
and N_PROT IS NOT null
and S_ID = LLL_S_HIST_TRANS(indxx).S_HIST_T; -- (¹)
end loop;
end;
こうして、このようにして、内部のSELECTを保存して結果をエクスポートする方法を説明します。それは良い習慣ではないことは分かっていますが、私は何か良いものを考え出すことができませんでした。 誰かが私にこれを解決する方法についての他の視点を与えることができたり、私が思いついたこの解決策を手伝ったりすることができれば、それは素晴らしいことでしょう!
問題を再開するには、スクリプトを既に起動して実行していましたが、同じことをするために変更する必要がありましたが、最後のIDだけで済む条件を追加する必要がありました。 IDを取得してカーソルでそれらを分離できるスクリプトを作成しましたが、今ではこのIDを最初のスクリプトに組み込む必要があります。
ありがとうございました!
を返信いただきありがとうございます、私は明確ではなかった場合、私は申し訳ありませんが、それは私が必要なものではありません。あなたが書いた内部選択([...]は、m_idとして '7'を選択します 、n_protはsubscription_version_id [...])は外部でなければならず、カーソル選択からのIDのみを使用します。 – RochaRF
おそらく同じデータと結果が問題をより明確にするでしょう。上記は、「セットごとの最後の行」フィルタリングの一般的なパターンです。 –