Sloupce, které jste přidali do klauzule SELECT bez agregační funkce, by měly být v klauzuli GROUP BY.
Aby to bylo trochu jasné:
Vezměte si tento příklad:
V klauzuli SELECT máte TransactionID, AccountID, TransactionAmount, TransactionDate a potřebujete SUM(TransactionAmount) pro všechna data, v takovém případě, pokud přidáte
SELECT TransactionDate, TransactionID, AccountID, SUM(TransactionAmount)
FROM Table
GROUP BY TransactionDate
Pak dostanete chybu, proč, protože
Předpokládejme, že máte 4 transakce v roce 20160101 a každá transakceAmount je 1000 $
Vaše očekávání bude
TransDate TransAmt
20140101 4000
V tomto případě, pokud do klauzule SELECT přinesete další atributy, jako je AccountID a TransactionID, kam půjdou? To je důvod, proč musíme do klauzule GROUP zahrnout všechny atributy v klauzuli SELECT kromě toho, který je s funkcí AGGREGATE.