SQL Server:can';当使用sum时,不能加入工作

SQL Server:can';当使用sum时,不能加入工作,sql,join,sum,aggregate,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

当我运行此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.anvnam
(用户名),而不是上面的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子句中

有人能帮我吗?开始对此感到沮丧


谢谢

只需将
a.anvnamn
添加到您的
分组依据
子句中。

因此,将其放入
分组依据
子句中:

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;

将anv.anvnamn添加到GROUP BY子句在第二次查询中,您更改了
select
中的列,但未在
GROUP BY
子句中更改该列。如果您想选择
a.anvnamn
,只需将
groupbyf.anv
更改为
groupbya.anvnamn
。谢谢大家!我以为我试过了,但显然没有P