2016-10-04 14 views
0

私は複数の売り上げリストテーブルを持っています各テーブルのトッププロダクト(より高い数量)を選択し、それぞれの売り上げリストテーブルから、すべてのテーブルのトッププロダクトを選択します。 これは私がこれまでにやったことです:複数のテーブルからトッププロダクトを選択重複プロダクトを結合して数量を合計

SELECT code_p, SUM(total) 
    FROM ( 
    SELECT code_p as code_p, SUM(qty_p) as total from table1_sells_list d 
    INNER JOIN table1 p ON d.code_t1 = p.code_t1 
    WHERE valid_t3 = true 
    GROUP BY code_p, qty_p 
----------------------------------------------------------------------- 
    UNION ALL 
    SELECT code_p, SUM(qty_p) as total from table2_sells_list a 
    INNER JOIN table2 c ON a.code_t2 = c.code_t2 
    WHERE valider_t3 = true 
    GROUP BY code_p, qty_p 
----------------------------------------------------------------------- 
    UNION ALL 
    SELECT code_p, SUM(qty_p) as total from table2_sells_list e 
    INNER JOIN table3 f ON e.code_t3 = f.code_t3 
    WHERE valider_t3 = true 
    GROUP BY code_p, qty_p 
    ) a 
    GROUP BY code_p, total 
    ORDER BY code_p, total DESC 

結果がこれです:あなたが同じ製品を持つ2つの列がある見ることができるように

enter image description here

、私は何をしたいが結合することですこのような重複行とSUM合計:

enter image description here

+0

*テーブル間の売上*を見たくないですか?また、サンプルデータは、あなたがしていることを明確にするのに役立ちます。 –

+0

最後の 'GROUP BY code_p'から' total'を削除するだけです。 – klin

+0

@klinこれはうまくいきましたが、クエリの先頭にあるフィールド名を 'totat'以外のものに変更する必要がありました。そうしないと、GROUP BY句にエラーが表示されます。 ありがとう – HamzaGeeK

答えて

1

あなたは全体のクエリをラップすることができますa

SELECT code_p, sum(sum) 
FROM (<your original query>) x 
GROUP BY code_p; 
+0

ありがとう、_klin_ここで私は何かのために気づいて簡単に速く私は彼のコメントで推測するが、あなたのコンセプトはとても有益です – HamzaGeeK

関連する問題