2017-01-23 134 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