Prendere le seguenti tabelle ...Posso includere una colonna non aggregata in una funzione di aggregazione in SQL senza inserirla in una clausola 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ì, ci sono 2 classi con lo stesso nome (Math) in quanto potrebbero essere in tempi diversi. Mi piacerebbe avere una lista delle classi e il numero di studenti registrati per ognuno. Vorrei le seguenti colonne (ClassId, ClassName, StudentCount).
Il mio tentativo di questo sarebbe qualcosa sulla falsariga di ...
SELECT Classes.ClassId, Classes.ClassName, Count(Registrations.RegistrationId)
FROM Classes
INNER JOIN Registrations ON Classes.ClassId = Registrations.ClassId
GROUP BY Classes.ClassId
(Nota Vorrei groupby il classid ma NON ClassName). È possibile in SQLServer 2008? Ovviamente chiedo perché SQL si lamenta
"ClassName is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause."
Grazie!
È possibile selezionare solo l'ID e il conteggio aggregato in una sottoquery, quindi ricongiungersi alla tabella per i nomi. – Pointy