This discussion is archived
2 Replies Latest reply: May 6, 2012 6:55 PM by 930339 RSS

複数テーブルを結合させながらの集計(SUM)に関して

930339 Newbie
Currently Being Moderated
以下のようなSQLを作成し、数量の合計を取得しようと考えていますが、どうしても結果が
求めているような形となりません。

 ※数量が合わない

単純なSQLの記述の問題かとは思われますが、教えて頂きたいと思います。

《データ》

 t_在庫日次

品目番号,数量,場所コード
A-001 5000 2YYY
A-001 -3000 2YYY
A-001 3000 2XXX

t_品目マスタ

品目マスタ,品目名称
A-001 AAAA

上記の2つのテーブルを検索し、数量の合計を出力したいと考えています。

《求める結果》

 場所コード,品目番号,品目名称,数量
 2YYY A-001 AAAA 2000    ← ここが6000 となってしまう。
2YYY A-001 AAAA 3000    ← ここが4000 となってしまう。


《記述SQL》

SELECT t.場所コード,t.品目番号,z.品目名称,SUM(t.数量) FROM t_在庫日次 t,t_品目マスタ z
WHERE t.品目番号 = z.品目番号(+) GROUP BY t.場所コード,t.品目番号,z.品目名称 ORDER BY t.場所コード

尚、以下に上記のテーブル構造とデータのSQLを作成しましたので、教えて頂ければ
幸いです。

よろしくお願いします。

☆ 作成SQL

create table t_在庫日次
(
  品目番号 char(10) ,
  数量 integer,
  場所コード char(10)
)

insert into t_在庫日次22 (品目番号,数量,場所コード) values('A-001',5000,'2YYY');
insert into t_在庫日次22 (品目番号,数量,場所コード) values('A-001',-3000,'2YYY');
insert into t_在庫日次22 (品目番号,数量,場所コード) values('A-001',3000,'2XXX');


create table t_品目マスタ
(
  品目番号 char(10) ,
  品目名称 char(10)
)

insert into t_品目マスタ (品目番号,品目名称) values('A-001','AAAA');
  • 1. Re: 複数テーブルを結合させながらの集計(SUM)に関して
    tmtsmic Explorer
    Currently Being Moderated
    こんにちは。
    #OSとDBのバージョンは書いた方がいいですね。

    下名の環境では以下のように正しく出力されました。

    OS: Windows Server 2003 Standard Edition SP2
    DB: Oracle 10g Standard Edition (10.2.0.1)
    場所コード   品目番号     品目名称     SUM(T.数量)
    ____________ ____________ ____________ ___________
    2XXX         A-001        AAAA                3000
    2YYY         A-001        AAAA                2000
    提示されているINSERT文ですが
    「t_在庫日次22」というテーブルがなく、エラーになってしまいました。
    このことから察するに、見ているテーブルを間違えてないでしょうか?
    テスト用に作成したテーブルでチェックしているとか。
    まずは数量のデータ内容を適当にいじってみて結果に変化があるか試してみると
    いいかもしれませんね。

    VIEWを使っていて実は中身のSELECT文が間違えているとか
    シノニムの参照先を間違えているとか、
    ミスをしやいすいポイントはいろいろあります。

    当然、Oracle自体のバグの可能性も0ではありません。
    サポート契約があればバグ情報も閲覧してみるといいでしょう。
    (見ていないので分かりませんが・・・)
    ※もし掲載されていたら、その内容は掲示板に記述できません。
  • 2. Re: 複数テーブルを結合させながらの集計(SUM)に関して
    930339 Newbie
    Currently Being Moderated
    tmtsmic 様、ご回答ありがとうございます。

    環境の詳細を記載せずに申し訳ありません。

    OS: Windows Server 2003 Standard Edition SP2
    DB: Oracle Database 11g Express Edition

    という環境で実行していました。

    また、テーブル名も転記の時に誤っておりました。 すみません。

    tmtsmic様が実行された時は正しく出力されましたか、、、難しいSQLではない為、何が原因かとずっと考えていました。

    Oracle Database 11g Express Editionである事から、バグという事も考えられますね、、、

    わざわざテストして頂き、本当にありがとうございました。

    なんとか他のプログラムの方でこのSQLに相当する記述でカバーしたいと思います。

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

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points