Возьмите следующие таблицы ...
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."
Спасибо!