我对 SQL Server 感到非常沮丧。我只是想加入 3 个表,非常简单,很容易在 mysql 中完成。但在 SQL Server 中,它一直告诉我在聚合函数中包含 tbl_department.deptname
。但是我可以在一个简单的字符串中使用什么聚合函数呢?
SELECT
COUNT(tblStudent_Department.student_id) AS Expr2,
tbl_department.deptname AS Expr1
FROM
tblStudent_Department
LEFT OUTER JOIN
tbl_department ON tblStudent_Department.deptcode = tbl_department.deptcode
LEFT OUTER JOIN
tblStudent ON tblStudent_Department.student_id = tblStudent.studentid
GROUP BY
tblStudent_Department.deptcode
请帮忙。
最佳答案
数据库不知道如果您在 deptcode
上进行分组,那么您就在 deptname
上进行了隐式分组。您必须通过将列添加到 group by
来告诉 SQL Server:
GROUP BY tblStudent_Department.deptcode, tbl_department.deptname
MySQL 的特殊之处在于,如果您不指定聚合,它基本上会随机选择一行。这可能会产生误导并导致错误的结果。与许多其他事情一样,MySQL 的解决方案更实用,而 SQL Server 的解决方案更正确。
关于sql - SQL Server 中的聚合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9555171/