1回のSQLで明細、小計、合計を取得できる

メモ代わりに。

GROUP BY句でRollUp集計という機能を使うと、明細、小計、合計が1度で取得できます。タイトルは3階層を前提にしましたが、おそらく3階層に限らず複数階層の中間計が取得できると思います。そのレコードが明細、中間計、合計のどの階層のものかは、GROUPING関数を使えば判定できます。

詳細は調べればいくらでも見つかると思うので、ここには詳しく書きません。

図でイメージするOracle DatabaseのSQL全集 第5回 RollUp集計など