Share via


Cláusula HAVING (SQL do Microsoft Access)

Aplica-se ao: Access 2013 | Access 2016

Especifica quais registros agrupados são exibidos em uma instrução SELECT com uma cláusula GROUP BY. Depois que GROUP BY combina os registros, HAVING exibe qualquer registro agrupado pela cláusula GROUP BY que atenda às condições da cláusula HAVING.

Sintaxe

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:

Sair Descrição
fieldlist O nome do(s) campo(s) a ser recuperado 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.
table O nome da tabela da qual os registros são recuperados. Para obter mais informações, consulte a cláusula FROM.
selectcriteria Critérios de seleção. Se a instrução incluir uma cláusula WHERE, o mecanismo do banco de dados Microsoft Access agrupará os valores depois de aplicar as condições WHERE aos registros.
groupfieldlist Os nomes de até 10 campos utilizados para agrupar registros. A ordem dos nomes de campos em groupfieldlist determina os níveis de agrupamento do mais alto para o mais baixo.
groupcriteria Uma expressão que determina quais registros agrupados serão exibidos.

Comentários

HAVING é opcional.

HAVING é semelhante a WHERE, que determina quais registros serão selecionados. Depois que os registros são agrupados com GROUP BY, HAVING determina quais registros são exibidos:

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.

Exemplo

Este exemplo seleciona os cargos atribuídos a mais de um funcionário na região Washington. Ele é chamado procedimento EnumFields, e pode ser encontrado no exemplo da instrução SELECT.

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ém

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.