HAVING (Entity SQL)

Indique un critère de recherche pour un groupe ou une fonction d'agrégation.

Syntaxe

[ 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.

Notes

La clause HAVING ne peut être utilisée qu’avec l’instruction SELECT. À défaut d’utilisation de GROUP BY, la clause 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 :

  1. Suivez la procédure indiquée dans Comment : Exécuter une requête qui retourne des résultats PrimitiveType.

  2. Transmettez à 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

Voir aussi