【发布时间】:2017-01-23 22:31:04
【问题描述】:
我无法让我的查询按我需要的方式工作。我有一个简单的查询,它输出以下数据:
我需要对每个月的 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 中,那么我会得到相同的结果。
任何帮助将不胜感激。
【问题讨论】:
-
好吧,如果您不想在同一月份显示两次,那么当一个月内存在两个 resellerID 时,您应该显示什么?
-
我相信在使用 SUM、COUNT、MIN 等函数时,您需要拥有 Have 而不是 where...
-
你不能把你的总和一起显示 resellerid,因为你没有把它放在 group by 子句中。 rs.sid 和 s.sid 也是如此。您必须更改查询和字段列表的方法
-
我可以想象一个查询返回这些字段:SUM(rs.total_reseller_sales), s.month, rs.sid (group by 如下 s,month, rs.sid)
-
如果您想合计销售额,那么您必须从您的 SELECT 中删除经销商 ID(因为多个卖家在任何给定月份都会有销售额)。如果您只想要给定月份的总销售额,请停止尝试通过经销商进行拆分。只需选择月份和 SUM(total_reseller_sales)。
标签: sql sql-server