带有分组依据的SUM的SQL查询

时间:2017-01-23 22:31:04

标签: sql sql-server

我不能按照我需要的方式进行查询。我有一个简单的查询输出以下数据:

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

我得到的错误是SELECT中的每个元素都是无效的,因为它不包含在聚合函数或GROUP BY子句中。

如果我将它们包含在GROUP BY中,那么我会得到相同的结果。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:3)

GROUP BY子句为您在该子句中指定的列的每个唯一组合形成行。

如果您想显示每个月的总和,那么只在group by子句中包含s.month:例如

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子句中包含转销商详细信息,也将它们包含在group by子句中,则每个转销商和每月将有一行