アプリ版:「スタンプのみでお礼する」機能のリリースについて

今、独学で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件)

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
)
    • good
    • 0

> 加算の場合、「1」のみではなく。

処理カラムの値が「1、3、5」のどれか。
> 減算の場合、「2」のみではなく。処理カラムの値が「2、4、6」のどれか。

可能かと。mod2を考えれば。
    • good
    • 0

>加算の場合、値は「1」減算の場合、値は「2」です。



これを1と-1に変えれば、集計SQL一発でできるかと。
「PL/SQLを使用した、プログラミング方」の回答画像1

この回答への補足

返信ありがとうございます!
ソース解読させてください。。。

すみません、質問が増えてしまいました。
もし、
加算の場合、「1」のみではなく。処理カラムの値が「1、3、5」のどれか。
減算の場合、「2」のみではなく。処理カラムの値が「2、4、6」のどれか。
となった場合は、実装可能なのでしょうか?

最後の質問なので、どうかよろしくお願いします。

補足日時:2010/03/28 22:08
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2010/04/22 13:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!