私はPL/SQLとOracle SQLのクエリが初めてです。別のクエリで1つのOracleクエリのデータを反復処理する方法。
達成しようとしていることはありますか?
ラベル「600」の今日から最後の100日目に出荷されたすべてのボックス(sysdate-100)を取得します。これらのボックスのうち、「50」と「51」のラベルが更新されたボックスを分離する必要があります。
ロジック:
1.ラベル「600」で最後の100分に出荷されたすべての箱を入手します。また、ラベル「600」で最後の100日間に出荷された数を取得します。 (例えば、今日は09/06、05/29に出荷されるすべてのボックスを入手してください) 2.更新されたラベルを持つすべてのボックスの数を取得します。 E.G、06/01に「600」→「50」のボックスの1つが移動したので、このボックスを検討する必要があります。
私はこのユースケースのためにPL/SQLを書こうとしていますが、これまでになっています。
VARIABLE box_id CHAR(50);
BEGIN
FOR box_id IN (SELECT
box_id, box_lable
FROM
my.box_table
WHERE box_lable = '600'
AND trunc(boxed_date) = trunc(SYSDATE - 100)
) LOOP
select count(*), box_lable
from my.shipping_info si
where box_id = si.box_id
and box_lable in ('51', '50')
group by box_lable
--COde to print the count of box_label = 600; count of box_label = 51; count of box_label = 50 .
END LOOP;
END;
上記のコードでは、SQL Developerでエラーが発生しています。私はOracle 11gとOracle 12cでこれを実行しています。 私は、ソリューションがOracle用に機能する限り、どのようなアプローチ(PL/SQLとは限らない)も柔軟に使用できます。
このコードスニペットを実行するために必要な変更を提案できますか?代わりに、PL/SQLループのサブクエリと
So: 'box_table'と 'shipping_info'という2つのテーブルがありますか?あるテーブルでは 'box_id'がユニーク(多分プライマリキー)で、他のテーブルでは外部キーでしょうか? "更新された"ラベルとは何ですか? 'shipping_info'テーブルで見つかるラベル(その' box_id'のためのラベル)だけですか?これは、あなたが行ったのと同じように、コードに加えてあなたの投稿に提供すべきすべての情報です。 – mathguy