- PR -

集計のSQL文について

1
投稿者投稿内容
もんた
常連さん
会議室デビュー日: 2005/05/19
投稿数: 20
投稿日時: 2007-07-30 07:16
oracle9iで以下のテーブルがあったとします。

No.   NAME COST
---   ---- ----
1   AAA 10
1   BBB 15
1   CCC 20
2   DDD 25
2   EEE 30


SQL文で以下のようにNO.ごとにCOSTの小計を出したいのです

No. NAME  COST  小計
--- ----  ----  ----
1 AAA  10
1 BBB  15
1 CCC  20  45
2 DDD  25
2 EEE  30  55

小計は、Noの最後のレコードに小計をだして
それ以外は、空欄で出したいです。

よろしくお願いします




べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-07-30 11:09
(SELECT SUM(COST) FROM テーブル as COST合計
WHERE (COST合計.No = テーブル.No)) AS 合計

とりあえず選択列にこれを入れれば表示されます。が全部の行に表示されちゃうので
表示順に並んでいる番号があれば(ORACLEだとrownumでできるんですかね)、

CASE WHEN NOT EXISTS
(SELECT id FROM テーブル as 同じNo
WHERE 同じNo.id > テーブル.id AND 同じNo.No= テーブル.No)

でくくってやれば(else は nullにでもしておく)よいでしょう。
よっしー
大ベテラン
会議室デビュー日: 2007/05/17
投稿数: 143
投稿日時: 2007-07-30 12:20
ROLLUPはどうでしょうか?
もんた
常連さん
会議室デビュー日: 2005/05/19
投稿数: 20
投稿日時: 2007-07-31 06:36
べるさん、よっしーさん、返信ありがとうございます。
ROLLUPをしらべたのですが、サンプルは、UNIONを用いた
もので、集計が別な行に表示されています。

ROLLUPを用いた具体的なSQL文を教えていただけないでしょうか?
よろしくお願いします。
よっしー
大ベテラン
会議室デビュー日: 2007/05/17
投稿数: 143
投稿日時: 2007-07-31 14:40
もんたさん

こんにちは。
今、Oracleの環境がないのでためせないのですが、
Googleで「ROLLUP ORACLE」で検索した結果の一番上のリンクにサンプルがあります。
これでいかがでしょうか?
1

スキルアップ/キャリアアップ(JOB@IT)