2

我坚持这个错误:

消息 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 
4

3 回答 3

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 子句中。

于 2013-04-11T14:51:40.140 回答
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

?

于 2013-04-11T14:46:57.847 回答
0

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

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

于 2013-04-11T14:47:17.897 回答