2017-01-23 136 views
1

我無法使我的查詢以我需要的方式工作。我有一個簡單的查詢,輸出以下數據:SUM與GROUP BY的SQL查詢通過

enter image description here

我需要的是總結了total_reseller_sales每個月,而不是顯示在同一個月兩次。我嘗試以下方法,但它拋出一個錯誤

SELECT rs.resellerid, rs.sid, SUM(rs.total_reseller_sales), s.month, s.sid 
FROM sales_report_resellers rs 
INNER JOIN resellers r ON rs.resellerid = r.resellerid 
INNER JOIN sales_report s ON rs.sid = s.sid 
WHERE (rs.sid > '294' AND rs.sid < '306') AND r.insidesales = 0 
    AND r.resellerid IN (7, 18, 22) 
GROUP BY month 

我得到的錯誤是因爲它不是在聚合函數或GROUP BY子句包含在SELECT每一個元素是無效的。

如果我將它們包含在GROUP BY中,那麼我會得到相同的結果。

任何幫助,將不勝感激。

+2

那麼,如果您不想同時顯示兩個月,那麼當一個月內有兩個resellerID時,您應該顯示什麼? – ZLK

+0

我相信你需要擁有而不是在使用SUM,COUNT,MIN等功能的時候...... – 2017-01-23 22:35:04

+0

因爲你沒有把它放在group by子句中,所以你不能顯示你的總和, 。 rs.sid和s.sid也是一樣。你必須改變你的查詢和字段列表的方法 –

回答

3

GROUP BY子句爲您在該子句中提名的列的每個唯一組合組成行。

如果你想顯示每個月的總和,則僅包括該組中s.month by子句:如

SELECT s.month, SUM(rs.total_reseller_sales) 
FROM sales_report_resellers rs 
INNER JOIN resellers r ON rs.resellerid = r.resellerid 
INNER JOIN sales_report s ON rs.sid = s.sid 
WHERE (rs.sid > '294' AND rs.sid < '306') AND r.insidesales = 0 
    AND r.resellerid IN (7, 18, 22) 
GROUP BY s.month 

如果包含在SELECT子句中的經銷商細節也包括他們的組那麼每個經銷商將會有一行AND月

+0

完美運作。我想你不必在子句中添加rs.total_reseller_sales,因爲SUM? – Brasciole