Spe*_*eed 4 group-by sum inner-join sql-server-2008
我有一个这样的查询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]
Run Code Online (Sandbox Code Playgroud)
它给了我这样的一张桌子:
ID SumColumn
67 1
67 4
70 2
70 6
70 3
70 6
80 5
97 1
97 3
Run Code Online (Sandbox Code Playgroud)
我怎样才能给我一个像这样的表,其中SumColumn被求和,按ID列分组?
ID SumColumn
67 5
70 17
80 5
97 4
Run Code Online (Sandbox Code Playgroud)
我无法使用GROUP BYSumColumn,因为出现错误(无效的列名“ SumColumn”。)COALESCE也不起作用。提前致谢。
编辑:
只是按ID分组会给我一个错误:
[Number1,Number2和我正在选择的其他列名称]在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。
编辑2
现在不知道为什么,而只是按Table.ID进行分组似乎起作用了。感谢所有发布正确答案的人,希望我能全部打勾!
你有没有尝试过:
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
Run Code Online (Sandbox Code Playgroud)
我看不到为什么上面的方法行不通,除非您没有在查询中适当地对表进行别名,这更多的是语法而不是逻辑错误,但是无论如何从SQL引擎的角度来看都是“错误的”。当SQL代码不为我工作,我简化 令人作呕我的查询,直到它失败的原因变得很明显。因此,我会尝试:
SELECT ID, SUM(sumCol) as SumColumn
FROM (
SELECT
Table1.ID, (Table2.[Number1] + Table2.[Number2]) AS sumCol
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
Run Code Online (Sandbox Code Playgroud)
...并且我允许以下内容(以及嵌套查询!)中显示的任何错误通知我进一步的调查。