Kolumnerna som du någonsin lagt till i SELECT-satsen utan en aggregatfunktion bör finnas i GROUP BY-satsen.
För att göra det lite tydligt:
Ta detta exempel:
Du har TransactionID, AccountID, TransactionAmount, TransactionDate i din SELECT-klausul och du behöver SUM(TransactionAmount) på alla datum, i så fall om du lägger till
SELECT TransactionDate, TransactionID, AccountID, SUM(TransactionAmount)
FROM Table
GROUP BY TransactionDate
Då får du ett felmeddelande, varför eftersom
Anta att du har fyra transaktioner 20160101 och varje transaktionsbelopp är $1000
Din resultatförväntning blir
TransDate TransAmt
20140101 4000
I det här fallet, om du tar med andra attribut i SELECT-satsen som AccountID och TransactionID, vart tar de vägen? Det är därför vi måste inkludera alla attribut i GROUP-satsen vad som helst i SELECT-satsen förutom den som är med AGGREGATE-funktionen.