2016-04-01 7 views
0

私は販売レポートクエリを実行しようとしています。GROUP BY SUM()で問題が発生する

SUM()を利用して購入した購入の合計は正しくありません。問題は私のGROUP BYである可能性があります。

クエリ:

SELECT salesreport.canprevid, 
    storelist.organization, 
    SUM(quantity * unitprice * (100 - discount)/100) AS total, 
    storelist.external_manager, 
    storelist.manager 
    FROM storelist 
    INNER JOIN salesreport 
    ON storelist.store_id = salesreport.canprevid 
    WHERE salesreport.date >= "2016-01-01" 
    AND salesreport.date <= "2016-01-31" 
    GROUP BY canprevid 
    ORDER BY organization DESC; 

予想したように、私は引くことができています:

|canprevid|organization|total (for the month of january 2016)| external manager| manager 

しかし、私はSUM()を使用して、totalの総計を行い、totalはしませんは、2016年1月の月の実際の合計金額と同じです。

一部のレコードが削除される理由、またはGROUP BYが計算に問題を引き起こしている理由がわかりません。

+1

であなたに列名を分離しません|代わりにカンマ(、)を使用するのは難しいです。 – geeksal

+1

テーブルのスキーマとサンプルのデータを持つSQLのフィーリングを投稿して、クエリを処理してください。あなたがSQLのフィドルについて知っていない場合は、単にそれをGoogle。 – geeksal

+2

INNER JOIN salesreport ON storelist.store_id = salesreport.canprevidが正しくマッピングされていないと、すべてのレコードを結合しない可能性があります。GROUP BYを先にドロップし、すべての「salesreport」レコードがあるかどうか確認してください。 –

答えて

1

あなたGROUP BYstorelist.organizationを追加します。

SELECT salesreport.canprevid, 
    storelist.organization, 
    SUM(quantity * unitprice * (100 - discount)/100) AS total, 
    storelist.external_manager, 
    storelist.manager 
    FROM storelist 
    INNER JOIN salesreport 
    ON storelist.store_id = salesreport.canprevid 
    WHERE salesreport.date >= "2016-01-01" 
    AND salesreport.date <= "2016-01-31" 
    GROUP BY salesreport.canprevid, storelist.organization 
    ORDER BY storelist.organization DESC;