Le colonne che hai mai aggiunto nella clausola SELECT senza una funzione di aggregazione dovrebbero essere nella clausola GROUP BY.
Per chiarire un po':
Prendi questo esempio:
Hai TransactionID, AccountID, TransactionAmount, TransactionDate nella tua clausola SELECT e hai bisogno di SUM(TransactionAmount) in tutte le date, in tal caso, se aggiungi
SELECT TransactionDate, TransactionID, AccountID, SUM(TransactionAmount)
FROM Table
GROUP BY TransactionDate
Quindi riceverai un errore, perché
Supponi di avere 4 transazioni nel 20160101 e ogni transazioneAmount è $ 1000
Le tue aspettative di risultato saranno
TransDate TransAmt
20140101 4000
In questo caso, se porti altri attributi nella clausola SELECT come AccountID e TransactionID, dove andranno? Questo è il motivo per cui dobbiamo includere tutti gli attributi nella clausola GROUP nella clausola SELECT eccetto quello che è con la funzione AGGREGA.