Oracle
 sql >> Base de données >  >> RDS >> Oracle

MAX() dans ORACLE SQL

Les colonnes que vous avez ajoutées dans la clause SELECT sans fonction d'agrégat doivent se trouver dans la clause GROUP BY.

Pour clarifier un peu :
Prenez cet exemple :

Vous avez TransactionID, AccountID, TransactionAmount, TransactionDate dans votre clause SELECT, et vous avez besoin de SUM(TransactionAmount) à toutes les dates, dans ce cas, si vous ajoutez

SELECT TransactionDate, TransactionID, AccountID, SUM(TransactionAmount) 
FROM Table 
GROUP BY TransactionDate

Ensuite, vous obtiendrez une erreur, pourquoi parce que
Supposons que vous avez 4 transactions sur 20160101 et que chaque transactionAmount est de 1000 $
Votre attente de résultat sera

TransDate      TransAmt
 20140101          4000

Dans ce cas, si vous apportez d'autres attributs dans la clause SELECT comme AccountID et TransactionID, où iront-ils ? C'est pourquoi nous devons inclure tous les attributs dans la clause GROUP quoi que ce soit dans la clause SELECT sauf celui qui est avec la fonction AGGREGATE.