【发布时间】:2011-07-11 05:13:40
【问题描述】:
我有一个带有sum 的查询,如下所示:
SELECT
Table1.ID, SUM(Table2.[Number1] + Table2.[Number2]) AS SumColumn
FROM Table1 INNER JOIN
Table3 ON Table1.ID = Table3.ID
INNER JOIN
Table2 ON Table3.ID = Table2.ID
WHERE (Table2.[Something] = 'Whatever')
GROUP BY Table1.ID, Table2.[Number1] , Table2.[Number2]
它给了我一张这样的表格:
ID SumColumn
67 1
67 4
70 2
70 6
70 3
70 6
80 5
97 1
97 3
我怎样才能让它给我一个这样的表,其中 SumColumn 被求和,按 ID 列分组?
ID SumColumn
67 5
70 17
80 5
97 4
我不能GROUP BY SumColumn 因为我收到一个错误(无效的列名'SumColumn'。)COALESCE 也不起作用。提前致谢。
编辑:
仅按 ID 分组会给我一个错误:
[Number1、Number2 和我正在选择的其他列名] 在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
编辑 2
不知道为什么,但现在似乎可以按 Table.ID 分组。感谢所有发布正确答案的人,我希望我能全部打勾!
【问题讨论】:
-
SELECT Table1.ID ....GROUP BY Table1.Att1应该给出一个错误,即您无法选择ID,因为它不在GROUP BY或聚合函数中 - 这些都是同一列并且您忘记更改一个在你的例子中? -
RE:您最近编辑的错误是不言自明的,不是吗?
SUM(Number1 + Number2)没问题。Number1, Number2不是。 -
Cannot use an aggregate or a subquery in an expression used for the group by list of a GROUP BY clause.
标签: sql-server-2008 group-by sum inner-join