【发布时间】:2020-04-26 22:05:46
【问题描述】:
我写了一个查询是SQL Server,它从customers 表中选择first_name,然后从students 表中选择grade。它在没有 CASE 表达式的情况下也可以正常工作,在 MySQL 中也可以正常工作,但是在 SQL Server 中我似乎一直遇到以下问题:
消息 8120,第 16 级,状态 1,第 81 行 列“papers.grade”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
我真的不知道为什么这是一个问题,我找到的唯一解决方案是将它作为“GROUP BY first_name,grade”包含在 group by 中。但是,这会修改我的输出,因此不可用。谁能解释一下为什么这个错误不断发生?将不胜感激。
我的sql查询
SELECT
first_name,
AVG(ISNULL(grade, 0)) AS average,
CASE
WHEN grade < 75 THEN'failing'
ELSE'passing' ENDAS result
FROM students
LEFT JOIN papers
ON papers.student_Id = students.id
GROUP BY first_name
ORDER BY average DESC
【问题讨论】:
标签: sql sql-server tsql join group-by