
今、独学でPL/SQLについて学習しているのですが、下記の問題が解けません。。。
考えても、自分の答えが出ないので質問させてください。
------------------------------------------------------------
下記の表(temp表)をPL/SQLのカーソルを使い取得しました。
temp表:主キー=No
------------------
No,ID, 処理, 数値
1 , A, 加算(1), 1000
2 , A, 加算(1), 500
3 , A, 減産(2), 500
4 , A, 加算(1), 100
-----------------
5 , B, 加算(1), 200
6 , B, 減産(2), 100
7 , B, 加算(1), 50
------------------
8 , C, 加算(1), 100
9 , C, 減産(2), 50
※加算の場合、値は「1」減算の場合、値は「2」です。
(1)その後、取得した値を使って、ID別の数値残高を計算したいです。
「加算」「減算」の区別は、「処理」カラムを使って区別をつけたいです。
例:ID「A」の数値残高 = 1000+500-500+100
ID「B」の数値残高 = 200+100-50
(2)1つのIDの計算が終了したら、次のIDの計算が始まる。
例:ID「A」の数値残高が計算終了→ID「B」の残高計算開始→ID「C」の残高計算開始
(3)その後、(2)で計算した値を、ほかのテーブル(answer)に挿入したいです。
例:
answer表
ID, 数値残高
--------------
A, 1100
B, 150
C, 50
このような処理をPL/SQLを使って、実装したいのですが。
(1)(2)(3)の処理を教えて頂けないでしょうか?
※1つのIDあたり、1万レコードを持っています。
パフォーマンス(処理速度)も考えて、プログラミングしたいです。
もし、カーソルを使って表を取得する意外に、よい方法があるならば、そちらの方法でも可能です。
ご教授・ご回答よろしくお願いします。質
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
insert into answer(
select id,sum(case syori when '1' then to_number(suti) else to_number(suti) * -1 end)
from temp
group by id
)
No.2
- 回答日時:
> 加算の場合、「1」のみではなく。
処理カラムの値が「1、3、5」のどれか。> 減算の場合、「2」のみではなく。処理カラムの値が「2、4、6」のどれか。
可能かと。mod2を考えれば。
No.1
- 回答日時:
>加算の場合、値は「1」減算の場合、値は「2」です。
これを1と-1に変えれば、集計SQL一発でできるかと。

この回答への補足
返信ありがとうございます!
ソース解読させてください。。。
すみません、質問が増えてしまいました。
もし、
加算の場合、「1」のみではなく。処理カラムの値が「1、3、5」のどれか。
減算の場合、「2」のみではなく。処理カラムの値が「2、4、6」のどれか。
となった場合は、実装可能なのでしょうか?
最後の質問なので、どうかよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
RDBとVSAMの比較
-
差し込み後、元データを変更し...
-
for whichの使い方
-
特定の文字列で列を区切るには?
-
ソフトバンクの無料着うたのお...
-
SQLで列名を変数にできないでし...
-
SQLで特定の項目の重複のみを排...
-
複数アドインプログラムをひと...
-
一度のsqlで値を取得するには
-
ある条件の最大値+1を初番する...
-
Outlook 送受信エラー
-
誰か教えてください
-
IDの欠番
-
UWSCでMOUSEORG関数が上手く処...
-
php+mysqlで複数選択削除について
-
この意味の違いを教えてくださ...
-
エクセルの関数について教えて...
-
Excel VBA ADODB
-
VMwareがCDドライブを認識する...
-
OSPFのDRの選出基準について シ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カーソル0件の時にエラーを発生...
-
カーソル宣言をIFで分けられま...
-
データ型でFloatとreal の計算...
-
カーソルを使って、最終行レコ...
-
(x 行処理されました)を表示さ...
-
処理件数を非表示にしたい
-
SQL-LOADERの逆のもの
-
RDBとVSAMの比較
-
ストアドプロシージャ_カーソル...
-
Accessで処理経過を表示したい...
-
カーソルオープンの処理について
-
NVLとDECODEのスピード差
-
カーソルがコミットするとクロ...
-
SQL plus で改行
-
PL/SQL で continue ?
-
VBAで複数あるTEXTBOXをクリッ...
-
テーブルの項目が異なるテーブ...
-
クエリの実行時間の目安
-
わり算の結果が整数でも小数点...
-
SELECT と INSERT の速度
おすすめ情報