Могу ли я включить неагрегированный столбец в агрегатную функцию в SQL, не помещая ее в предложение GROUP BY?

Возьмите следующие таблицы ...

Classes
ClassId ClassName
1       Math
2       Math
3       Science
4       Music

Registrations
RegistrationId ClassId StudentName
1              1       Stu
2              1       Rick
3              2       John
4              4       Barb
5              4       Dan
6              3       Einstein

Да, есть 2 класса с одинаковым именем (Math), поскольку они могут быть в разное время. Я хотел бы получить список классов и количество студентов, зарегистрированных для каждого из них. Мне нужны следующие столбцы (ClassId, ClassName, StudentCount).

Моя попытка будет примерно такой же, как…

SELECT Classes.ClassId, Classes.ClassName, Count(Registrations.RegistrationId)
FROM Classes
INNER JOIN Registrations ON Classes.ClassId = Registrations.ClassId
GROUP BY Classes.ClassId

(Обратите внимание, что я хотел бы GroupBy ClassId, но НЕ ClassName). Возможно ли это в SQLServer 2008? Очевидно, я спрашиваю, потому что SQL жалуется

"ClassName is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause."

Спасибо!

5
задан OMG Ponies 27 January 2011 в 21:02
поделиться