SQL Server:使用sum时无法加入工作

时间:2014-10-03 12:38:20

标签: sql join sum aggregate

当我运行这个sql时:

SELECT 
    SUM(f.flex) as flex, 
    f.anv as anvid 
FROM 
    flex f 
GROUP BY 
    f.anv

我会得到:

 anvid   | flex
 ---------------
   2     |  120
   6     |  365 
   9     |  715 
  19     | 2485 
  20     | 1545 
  21     | 1833 
  22     |  796 
  35     | 1783 
  36     |  -15 
  37     |-1582 
  38     | 1999 
  59     |  510
  70     | -275

现在,我想在flex.anv和tablecolumn anv.id上建立联接,这样我就可以打印anv.anvnamn(用户名)而不是上面的ID。

我尝试过这样的事情:

SELECT 
    SUM(f.flex) as flex, 
    a.anvnamn as anvnamn 
FROM
    flex f 
INNER/LEFT/RIGHT JOIN 
    anv a ON f.anv=a.id 
GROUP BY 
    f.anv

然后我收到错误:

  

列'anv.anvnamn'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。

任何人都可以帮助我吗?开始对此感到沮丧...

谢谢!

2 个答案:

答案 0 :(得分:1)

只需将a.anvnamn添加到您的GROUP BY条款中。

答案 1 :(得分:1)

所以,把它放在group by子句中:

SELECT sum(f.flex) as flex, a.anvnamn as anvnamn
from flex f JOIN
     anv a
     ON f.anv = a.id
GROUP BY a.anvnamn;

注意:如果两个ID具有相同的名称,则它们将合并。如果您不想要此行为,请使用:

GROUP BY a.anvnamn, f.anv;