HAVING (Entity SQL)
Spécifie une condition de recherche pour un groupe ou un agrégat.
[ HAVING search_condition ]
Arguments
- search_condition
Indique les critères de recherche à réunir pour le groupe ou l'agrégat. Lorsque HAVING est utilisé avec GROUP BY ALL, la clause HAVING remplace ALL.
Notes
La clause HAVING est utilisée pour spécifier une condition de filtrage supplémentaire sur le résultat d'un regroupement. Si aucune clause GROUP BY n'est spécifiée dans l'expression de requête, un groupe implicite constitué d'un seul ensemble est supposé exister.
Remarque : |
---|
HAVING ne peut être utilisé qu'avec l'instruction SELECT (Entity SQL).Lorsque GROUP BY (Entity SQL) n'est pas utilisé, HAVING se comporte comme une clause WHERE. |
La clause HAVING fonctionne comme la clause WHERE, à la différence près que son application intervient après l'opération GROUP BY. Cela signifie que la clause HAVING ne peut faire référence qu'à des agrégats et des alias de regroupement, comme l'illustre l'exemple suivant.
SELECT Name, SUM(o.Price * o.Quantity) AS Total FROM orderLines AS o GROUP BY o.Product AS Name
HAVING SUM(o.Quantity) > 1
La clause précédente limite les groupes à ceux qui comportent plusieurs produits.
Exemple
La requête Entity SQL ci-dessous utilise les opérateurs HAVING et GROUP BY pour spécifier un critère de recherche pour un groupe ou un agrégat. Cette requête est basée sur le modèle de vente AdventureWorks Sales Model. Pour compiler et exécuter cette requête, procédez comme suit :
Suivez la procédure indiquée dans Procédure : exécuter une requête qui retourne des résultats PrimitiveType (EntityClient).
Passez à la méthode
ExecutePrimitiveTypeQuery
la requête suivante en tant qu'argument :
SELECT VALUE name FROM AdventureWorksEntities.Products
as P GROUP BY P.Name HAVING MAX(P.ListPrice) > @price