Cláusula HAVING (Microsoft Access SQL)HAVING clause (Microsoft Access SQL)

Aplica-se ao: Access 2013 | Access 2016Applies to: Access 2013 | Access 2016

Especifica quais registros agrupados serão exibidos em uma instrução SELECT com uma cláusula GROUP BY.Specifies which grouped records are displayed in a SELECT statement with a GROUP BY clause. Após GROUP BY combinar registros, HAVING exibe quaisquer registros agrupados pela cláusula GROUP BY que satisfazem as condições da cláusula HAVING.After GROUP BY combines records, HAVING displays any records grouped by the GROUP BY clause that satisfy the conditions of the HAVING clause.

SintaxeSyntax

Selecione fieldlist FROM tabela onde o selectcriteria Agrupar por groupfieldlist [HAVING groupcriteria ]SELECT fieldlist FROM table WHERE selectcriteria GROUP BY groupfieldlist [HAVING groupcriteria ]

Uma instrução SELECT que contém a cláusula HAVING tem estas partes:A SELECT statement containing a HAVING clause has these parts:

PartePart DescriçãoDescription
fieldlistfieldlist O nome do campo ou dos campos a serem recuperados, junto com qualquer alias de nome de campo, funções agregadas do SQL, predicados de seleção (ALL, DISTINCT, DISTINCTROW ou TOP), ou outras opções da instrução SELECT.The name of the field or fields to be retrieved along with any field-name aliases, SQL aggregate functions, selection predicates (ALL, DISTINCT, DISTINCTROW, or TOP), or other SELECT statement options.
tabletable O nome da tabela a partir da qual os registros são recuperados.The name of the table from which records are retrieved. Para obter mais informações, consulte a cláusula FROM .For more information, see the FROM clause.
selectcriteriaselectcriteria Critérios de seleção.Selection criteria. Se a instrução inclui uma cláusula WHERE , o mecanismo de banco de dados do Microsoft Access agrupa valores após aplicar as condições WHERE aos registros.If the statement includes a WHERE clause, the Microsoft Access database engine groups values after applying the WHERE conditions to the records.
groupfieldlistgroupfieldlist Os nomes de até 10 campos usados para agrupar registros.The names of up to 10 fields used to group records. A ordem dos nomes de campo na groupfieldlist determina os níveis de agrupamento da maior para o menor nível de agrupamento.The order of the field names in groupfieldlist determines the grouping levels from the highest to the lowest level of grouping.
groupcriteriagroupcriteria Uma expressão que determina quais registros agrupados serão exibidos.An expression that determines which grouped records to display.

ComentáriosRemarks

HAVING é opcional.HAVING is optional.

HAVING é semelhante a WHERE, que determina quais registros serão selecionados.HAVING is similar to WHERE, which determines which records are selected. Depois que os registros são agrupados com GROUP BY, HAVING determina quais registros serão exibidos:After records are grouped with GROUP BY, HAVING determines which records are displayed:

SELECT CategoryID, 
Sum(UnitsInStock) 
FROM Products 
GROUP BY CategoryID 
HAVING Sum(UnitsInStock) > 100 And Like "BOS*";

Uma cláusula HAVING pode conter até 40 expressões vinculadas por operadores lógicos, como And e Or.A HAVING clause can contain up to 40 expressions linked by logical operators, such as And and Or.

ExemploExample

Este exemplo seleciona os cargos atribuídos a mais de um funcionário na região Washington.

This example selects the job titles assigned to more than one employee in the Washington region. Ele chama o procedimento EnumFields, que pode ser encontrado no exemplo da instrução SELECT.It calls the EnumFields procedure, which you can find in the SELECT statement example.

Sub HavingX() 
 
    Dim dbs As Database, rst As Recordset 
 
    ' Modify this line to include the path to Northwind 
    ' on your computer. 
    Set dbs = OpenDatabase("Northwind.mdb") 
 
    ' Select the job titles assigned to more than one  
    ' employee in the Washington region.  
    Set rst = dbs.OpenRecordset("SELECT Title, " _ 
        & "Count(Title) as Total FROM Employees " _ 
        & "WHERE Region = 'WA' " _ 
        & "GROUP BY Title HAVING Count(Title) > 1;") 
     
    ' Populate the Recordset. 
    rst.MoveLast 
     
    ' Call EnumFields to print recordset contents. 
    EnumFields rst, 25 
 
    dbs.Close 
 
End Sub 

Confira tambémSee also