LOOPして集計したい。
お世話になります。
PLSQLを作成しており、商品番号ごとの合計売上金額をテーブルに入れる仕様です。
このときSQL上で、GROUP BYをして商品番号ごとの売上金額を求めているのですが
そうではなく、CURSORをOPENしてその中で集計したいのですが、記述方法が分かりません。
ご教示のほどよろしくお願いします。
現状PLSQL(必要部分のみ記載) CURSOR URIAGE IS SELECT SYOHIN_NO ,SUM(KINGAKU) KINGAKU FROM URIAGE GROUP BY SYOHIN_NO; CR_URAGE CC_URIAGE%ROWTYPE OPEN URIAGE LOOP FETCH CC_URIAGE INTO CR_URIAGE; EXIT WHEN CC_URIAGE%NOTFOUND; REC_URIAGE := CR_URAIGE.SYOHIN_NO REC_URIAGE := CR_URAIGE.KINGAKU BN_RET := MAIN; --登録FUNCTIONへ END LOOP; FUNCTION MAIN RETURN NUMBER IS BEGIN INSERT INTO SUM_URI・・・・・ 上記と同じ結果になるように、LOOP内で集計を行いたいです。 --イメージ SYOHIN_NO_IN NUMBER; NOW_SYOHIN_NO IN NUBER; URIAGE IN NUMBER; KEI_URIAGE IN NUMBER; CURSOR URIAGE IS SELECT SYOHIN_NO ,KINGAKU FROM URIAGE ORDER BY SYOHIN_NO; OPEN URIAGE LOOP FETCH CC_URIAGE INTO CR_URIAGE; EXIT WHEN CC_URIAGE%NOTFOUND; SYOHIN_NO_IN := CR_URAIGE.SYOHIN_NO; --比較用の変数 LOOP NOW_SYOHIN_NO := CR_URAIGE.SYOHIN_NO URIAGE := CR_URAIGE.URIAGE; KEI_URIAGE := URIAGE + KEI_URIAGE; EXIT WHNE SYOHIN_NO_IN <> NOW_SYOHIN_NO; END LOOP; END LOOP;
質問にお使いのテーブルのCREATE TABLE文と数件でいいからINSERT文でデータを提示してください。
PL/SQLです。固有名詞を覚えられないとこの仕事は辛いです。
コードはきちんと字下げしましょう。どのコンピューター言語をやるにしても見易く字下げできないとプログラマとしてのセンスも能力も疑われます。また、 ; を省略するのは止めなさい。エラーになります。
OPENしたカーソルは万難を排してCLOSEしなければなりません。
無料で使えるOracleもあります。 http://www.oracle.com/technetwork/jp/database/database-technologies/express-edition/downloads/index.html Windows版はソフトウェア要件をちゃんと守った環境を用意してください。 PC持ち込みの職場でWindow7 Professional 64bitを用意するように指示されても、こっちの方が安かったからといってWindow7 Home Edition を持ってきてOracleに接続できずに去っていく人が5人に1人くらい必ずいます。 https://docs.oracle.com/cd/E16338_01/install.112/b58878/reqs.htm#CHDHGGFE
ローマ字表はヘボン式を使われては? http://www.geocities.jp/kagemusyamk1/r01-hepburn.html
解決したので結構です
全部を書くのは無理でしょう。省略されていても頭の中でロジックをまわしてください。
回答1件
あなたの回答
tips
プレビュー