SQL聚合函数和Group By

时间:2012-03-28 02:18:28

标签: sql sql-server ms-access

员工
EMPID
empName
empStoreNum

发票
invNo
invAmount
EMPID

我在Employee和Invoice上面有两个表。我想设置一个查询来检索员工姓名,员工店号以及每位员工的总销售额。我在下面发出了一个查询但它有效,但我无法检索员工店号。

SELECT Emp.empName, Sum(Inv.invAmount) AS totalSales
  FROM Invoice AS Inv INNER JOIN Employee AS Emp ON Inv.empId = Emp.empId
 GROUP BY Emp.empName

如果我将Emp.empStoreNum添加到SELECT中,我会收到以下错误:“您试图执行一个不包含指定表达式'empStoreNum'的查询作为聚合函数的一部分。”如何修改查询以获取员工店号也?

3 个答案:

答案 0 :(得分:2)

select-list中的所有非聚合列必须列在GROUP BY子句中(除非您使用的是MySQL,它使用一组非常不同的规则,或者除非您使用的是最新版本的PostgreSQL ,它能够推断出功能依赖性。)

SELECT Emp.empName, Emp.empStoreNum, Sum(Inv.invAmount) AS totalSales
  FROM Invoice AS Inv INNER JOIN Employee AS Emp ON Inv.empId = Emp.empId
 GROUP BY Emp.empName, Emp.empStoreNum

答案 1 :(得分:2)

尝试将empStoreNum添加到GROUP BY

SELECT Emp.empName, Emp.empStoreNum, Sum(Inv.invAmount) AS totalSales
FROM Invoice AS Inv INNER JOIN Employee AS Emp ON Inv.empId = Emp.empId
GROUP BY Emp.empName, Emp.empStoreNum

答案 2 :(得分:1)

通过

将第二列添加到您的论坛