tomar las siguientes tablas ...¿Puedo incluir una columna no agregada en una función agregada en SQL sin ponerla en una cláusula 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
Sí, hay 2 clases con el mismo nombre (Matemáticas), ya que pueden estar en diferentes momentos. Me gustaría obtener una lista de las clases y el número de estudiantes registrados para cada una. Me gustaría las siguientes columnas (ClassId, ClassName, StudentCount).
Mi intento de esto sería algo en la línea de ...
SELECT Classes.ClassId, Classes.ClassName, Count(Registrations.RegistrationId)
FROM Classes
INNER JOIN Registrations ON Classes.ClassId = Registrations.ClassId
GROUP BY Classes.ClassId
(Nota quisiera GroupBy la ClassId pero NO NombredeClase). ¿Es esto posible en SQLServer 2008? Obviamente me pregunto porque SQL se queja
"ClassName is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause."
Gracias!
Puede seleccionar solo el ID y el conteo agregado en una subconsulta, y luego volver a unirse a la tabla para los nombres. – Pointy