As colunas que você adicionou na cláusula SELECT sem uma função agregada devem estar na cláusula GROUP BY.
Para deixar um pouco claro:
Tome este exemplo:
Você tem TransactionID, AccountID, TransactionAmount, TransactionDate em sua cláusula SELECT e precisa de SUM(TransactionAmount) em todas as datas, nesse caso, se você adicionar
SELECT TransactionDate, TransactionID, AccountID, SUM(TransactionAmount)
FROM Table
GROUP BY TransactionDate
Então você receberá um erro, porque
Suponha que você tenha 4 transações em 20160101 e cada transaçãoAmount seja $ 1000
Sua expectativa de resultado será
TransDate TransAmt
20140101 4000
Nesse caso, se você trouxer outros atributos na cláusula SELECT como AccountID e TransactionID, para onde eles irão? É por isso que temos que incluir todos os atributos na cláusula GROUP, qualquer que seja a cláusula SELECT, exceto aquele que está com a função AGGREGATE.