sql - SQL Server 中的聚合函数

标签 sql sql-server

我对 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/

相关文章:

c# - SQL 服务器 : is there any performance penalty for wrapping a SELECT query in a transaction?

sql-server - 将 XML 从一种格式转换为另一种格式

sql-server - 抑制SQL Server SSDT中的一些警告

mysql - SQL 检查列值是否变化

mysql - 比较 mySQL 中的多个列

sql - 将备份恢复到不同的服务器 - 用户权限

mysql - 获取与至少一名其他员工同时进入项目的所有员工的名字和姓氏

sql-server - 索引如何成为表插入/更新/删除的开销?

sql - 如何获取从当前日期算起的最后 12 个月以及截至检索到的上个月 1 日的额外天数

php - MYSQL如果某个字段返回0则选择另一个查询并连接