質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

PL/SQL

PL/SQL (Procedural Language/Structured Query Language) はOracle CorporationによるSQL(非手続き型言語)を手続き型言語に拡張させるために開発されたプログラミング言語です。

Q&A

解決済

1回答

4389閲覧

PLSQL LOOPして集計したい。

yamaguti

総合スコア185

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

PL/SQL

PL/SQL (Procedural Language/Structured Query Language) はOracle CorporationによるSQL(非手続き型言語)を手続き型言語に拡張させるために開発されたプログラミング言語です。

0グッド

0クリップ

投稿2018/10/10 01:42

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;

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Orlofsky

2018/10/10 20:53

質問にお使いのテーブルのCREATE TABLE文と数件でいいからINSERT文でデータを提示してください。
Orlofsky

2018/10/10 20:58

PL/SQLです。固有名詞を覚えられないとこの仕事は辛いです。
Orlofsky

2018/10/10 21:02

コードはきちんと字下げしましょう。どのコンピューター言語をやるにしても見易く字下げできないとプログラマとしてのセンスも能力も疑われます。また、 ; を省略するのは止めなさい。エラーになります。
Orlofsky

2018/10/10 21:17

OPENしたカーソルは万難を排してCLOSEしなければなりません。
Orlofsky

2018/10/10 21:17

無料で使える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
yamaguti

2018/10/11 00:02

解決したので結構です
yamaguti

2018/10/11 00:04

全部を書くのは無理でしょう。省略されていても頭の中でロジックをまわしてください。
guest

回答1

0

自己解決

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

投稿2018/10/11 00:05

yamaguti

総合スコア185

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Orlofsky

2018/10/11 18:25

どう解決しました? 直す気がないと、次の質問に答えてくれる人は少なくなります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問