2016-10-04 9 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 

結果是這樣的:

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