• 締切済み

集計後の数値が倍になる

Oracleで簡単な集計処理を作成しているのですが、 集計後の値が倍になってしまいます。 ローカル環境でテストした際には問題なく 集計可能なのですが、テスト環境にアップした際に 倍になる現象が発生しました。 ■ローカル環境 Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product ■テスト環境 Oracle Database 9i Enterprise Edition Release 9.2.0.4.0 DBやテーブルの設定の問題かと思っておりますが、 検討がつかず困っております。 調査の方向性などだけでもご教授いただけましたら幸いです。 よろしくお願いいたします。

みんなの回答

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.3

#1です。 > 同じデータであることは間違いありません。 #2さんのご指摘のとおり、確認することからはじめたほうがよさそうですよ。 「レコード件数が一致しているか」二つの環境を確かめましたか? まずは結合しないで、レコード数と数値項目のSUMを取得。 select count(*), count(DISTINCT ID) from MST_ENTRY; 同数が得られれば良いが、2:1の結果が出るようなら 「ID列にPRIMARY KEY貼り忘れてる&うっかりINSERTを2回実行」とか。 select count(*), sum(MCNT), sum(PCNT) from TBL_VOTE; こちらも二つの環境で完全一致しますか?

amane123
質問者

補足

ご回答ありがとうございます。 ご指摘の通り、データの確認不足があります。 TBL_VOTEの内容は確認していましたが、 MST_ENTRYの確認はしていませんでした。 今手元に環境がないので確認が取れ次第 ご報告いたします。 ありがとうござます!

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

テスト環境ではデータ行数が倍だった,なんてよくある話ですよね。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

同じ構造・同じデータ・環境のみ異なる状況で結果が倍なのか? SQL文とテーブル構造を示していただくことは可能ですか?

amane123
質問者

お礼

早速のご回答ありがとうございます。 補足にSQL文とテーブルレイアウトを掲載させていただきました。 お気づきの点がございましたらアドバイスお願いいたします。

amane123
質問者

補足

テストデータ及びソースはローカルと全く同じものを使用しているので 同じデータであることは間違いありません。 ただ、DBの作成がクライアントの管理体制の関係で直接触ることができないため、構造、環境が同じであるかどうかは不明です。 ※テーブルに関してはこちらでcreate文を作成して送っているので おそらく同じ構造になっていると思われます。 下記はテーブルのレイアウトです。 ■MST_ENTRY ----------------------------------------------------------------- ID(NUMBER)|NAME(VARCHAR2) ■TBL_VOTE ----------------------------------------------------------------- DIVISION(NUMBER)|TIME(DATE)|ENTRY(NUMBER)|MCNT(NUMBER)|PCNT(NUMBER) ※TBL_VOTEに日ごとの数値を格納し、全データを集計します。 下記は問題のSQL文です。 SELECT ENTRY,E.NAME,SUM(MCNT) MCNT,SUM(PCNT) PCNT FROM TBL_VOTE V LEFT JOIN (SELECT ID,NAME FROM MST_ENTRY) E ON V.ENTRY = E.ID GROUP BY ENTRY,E.NAME

関連するQ&A