今、独学で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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 1から9まで表示するのに必要なボタン 1 2023/02/05 19:06
- 化学 有効数字の取り扱いについて 高校化学では、測定値同士の計算結果の有効数字は、測定値に合わせるようにな 4 2022/06/30 14:07
- C言語・C++・C# C言語 3 2022/10/04 15:07
- 確定申告 不動産投資の減価償却費の算出方法 5 2022/12/03 15:06
- C言語・C++・C# numpyスライス機能を使った数値計算 2 2023/05/08 16:01
- 労働相談 有給休暇使用時の賃金の計算方法について 5 2022/04/04 00:02
- 数学 小学生がたった1日で19×19までかんぺきに暗算できる本、のおみやげ算。数学的に言うと何? 3 2023/04/07 09:35
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- 数学 パーセントの計算 増減 5 2023/08/01 22:39
- Excel(エクセル) excelにて、ある固定値から連番を振りたいが、上限値が異なる連番を振る処理を複数回行いたい場合 6 2022/10/22 11:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
処理件数を非表示にしたい
-
データ型でFloatとreal の計算...
-
SELECT と INSERT の速度
-
カーソル0件の時にエラーを発生...
-
NVLとDECODEのスピード差
-
ストアドプロシージャ_カーソル...
-
MERGEコマンドについて
-
SQL plus で改行
-
カーソルを使って、最終行レコ...
-
差し込み後、元データを変更し...
-
フィルターかけた後、重複を除...
-
外部参照してるキーを主キーに...
-
for whichの使い方
-
エクセルで最後の文字だけ置き...
-
SQLで特定の項目の重複のみを排...
-
SQL文で、合計が0のレコードを...
-
ExcelのVBAコードについて教え...
-
速度が低下し無効になったアド...
-
SELECT 文 GROUP での1件目を...
-
副問合せの書き方について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カーソル0件の時にエラーを発生...
-
データ型でFloatとreal の計算...
-
処理件数を非表示にしたい
-
カーソルを使って、最終行レコ...
-
カーソル宣言をIFで分けられま...
-
NVLとDECODEのスピード差
-
ACCESSで一括処理する方法
-
ストアドプロシージャ_カーソル...
-
Accessで処理経過を表示したい...
-
SELECT と INSERT の速度
-
カーソルオープンの処理について
-
クエリの実行時間の目安
-
動的SQLの処理件数
-
RDBとVSAMの比較
-
(x 行処理されました)を表示さ...
-
oracle pl/sqlの処理速度について
-
【PL/SQL】カンマ区切りのレコ...
-
PL/SQL で continue ?
-
SQL plus で改行
-
複数レコードを1変数にセット...
おすすめ情報