A cláusula HAVING especifica os registos agrupados que são apresentados numa instrução SELECT com uma cláusula GROUP BY. Depois de GROUP BY combinar os registos, HAVING apresenta todos os registos agrupados pela cláusula GROUP BY que satisfaçam as condições da cláusula HAVING.
Sintaxe
SELECT listadecampos
FROM tabela WHERE critériosdeseleção GROUP BY agruparlistadecampos [HAVING critériosdegrupo]Uma instrução SELECT que contenha uma cláusula HAVING tem as seguintes partes:
Parte |
Descrição |
listadecampos |
O nome do campo ou campos a obter juntamente com os aliases de nome do campo, funções de agregação SQL, predicados de seleção (ALL, DISTINCT, DISTINCTROW ou TOP) ou outras opções da instrução SELECT. |
tabela |
O nome da tabela a partir da qual são obtidos os registos. |
critériosdeseleção |
Critérios de seleção. Se a instrução incluir uma cláusula WHERE, o motor de base de dados do Microsoft Access agrupa os valores após aplicar as condições WHERE aos registos. |
listadecamposdegrupo |
Os nomes de um máximo de 10 campos utilizados para agrupar registos. A ordem dos nomes de campo na listadecamposdegrupo determina os níveis de agrupamento do mais alto para o mais baixo. |
agruparcritérios |
Uma expressão que determina os registos agrupados a apresentar. |
Observações
HAVING é opcional.
HAVING é semelhante a WHERE, que determina que registos estão selecionados. Após o agrupamento através de GROUP BY, HAVING determina que registos são apresentados:
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 ligadas por operadores lógicos, como E e Ou.