SQL查询错误

时间:2013-04-11 14:44:18

标签: sql sql-server msg

我坚持这个错误:

  

消息8120,等级16,状态1,行2列'Subjects.off_CODE'是   在选择列表中无效,因为它不包含在任何一个中   聚合函数或GROUP BY子句。

我不知道这个查询有什么问题。

use Enlistment
go

SELECT Subjects.off_CODE, Subjects.subj_CODE, Subjects.description, 
Subjects.unit, COUNT(Enlistment.off_CODE) FROM Enlistment, Subjects
WHERE Subjects.off_CODE = 11315
GROUP BY Enlistment.off_CODE 

3 个答案:

答案 0 :(得分:1)

如果选择了列,它必须出现在GROUP BY子句中,除非它包含在聚合函数中(就像错误消息所示)。

use Enlistment
go

SELECT Subjects.off_CODE, Subjects.subj_CODE, Subjects.description, 
Subjects.unit, COUNT(Enlistment.off_CODE) FROM Enlistment, Subjects
WHERE Subjects.off_CODE = 11315
GROUP BY Subjects.off_CODE, Subjects.subj_CODE, Subjects.description, 
Subjects.unit

因此,在您的示例中,选择的唯一不必包含在GROUP BY子句中的字段是 Enlistment.off_CODE ,因为它在聚合函数COUNT中使用( COUNT(Enlistment.off_CODE))。所有其他字段必须包含在GROUP BY子句中。

答案 1 :(得分:0)

你试过这个:

GROUP BY Enlistment.off_CODE, Subjects.off_CODE

SELECT DISTINCT Subjects.off_CODE, Subjects.subj_CODE, Subjects.description, 
Subjects.unit, COUNT(Enlistment.off_CODE) FROM Enlistment, Subjects
WHERE Subjects.off_CODE = 11315
GROUP BY Enlistment.off_CODE, Subjects.off_CODE

答案 2 :(得分:0)

您告诉查询GROUP BY您未选择的列。您需要确保选择GROUP BY字段中包含的列。

@ Question3CPO将起作用,除了它在SELECT语句中包含Subjects.subj_CODE并且可能不包含在函数中。