Ошибка SQL-запроса

Я застрял в этой ошибке:

Сообщение 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 ответа

Решение

Если столбец выбран, он должен появиться в предложении 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.

Вы сообщаете запрос GROUP BY столбцу, который вы не выбираете. Вам необходимо убедиться, что ВЫ ВЫБИРАЕТЕ столбцы, содержащиеся в поле GROUP BY.

@ Question3CPO будет работать, за исключением того, что он включает Subjects.subj_CODE в операторе SELECT и, вероятно, не содержится в функции.

Вы пробовали это:

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

?

Другие вопросы по тегам