Cláusula HAVING (Microsoft Access SQL)
Se aplica a: Access 2013 | Access 2016
Especifica qué registros agrupados se muestran en una instrucción SELECT con una cláusula GROUP BY. Después de que GROUP BY combina los registros, HAVING muestra los registros agrupados por la cláusula GROUP BY que satisfacen las condiciones de la cláusula HAVING.
Sintaxis
SELECT fieldlist FROM table WHERE selectcriteria GROUP BY groupfieldlist [HAVING groupcriteria ]
Una instrucción SELECT que contenga una cláusula HAVING consta de los siguientes elementos:
Parte | Descripción |
---|---|
fieldlist | Nombre del campo o campos que se recuperarán junto con los alias de nombre de campo, funciones de agregado de SQL, predicados de selección (ALL, DISTINCT, DISTINCTROW o TOP) u otras opciones de la instrucción SELECT. |
table | Nombre de la tabla en la que se recuperan los registros. Para obtener más información, vea la cláusula FROM. |
selectcriteria | Criterios de selección. Si la instrucción incluye una cláusula WHERE, el motor de base de datos de Microsoft Access agrupa los valores después de aplicar las condiciones WHERE a los registros. |
groupfieldlist | Nombres de 10 campos como máximo para agrupar los registros. El orden de los nombres de campo en listaDeCamposDeGrupo determina los niveles de agrupamiento desde el nivel superior al nivel inferior de agrupamiento. |
groupcriteria | Expresión que determina qué registros agrupados se deben mostrar. |
Comentarios
HAVING es opcional.
HAVING es similar a WHERE, que determina qué registros se seleccionan. Después de que los registros se agrupan con GROUP BY, la cláusula HAVING determina qué registros se muestran:
SELECT CategoryID,
Sum(UnitsInStock)
FROM Products
GROUP BY CategoryID
HAVING Sum(UnitsInStock) > 100 And Like "BOS*";
Una cláusula HAVING puede contener hasta 40 expresiones vinculadas por operadores lógicos, como And y Or.
Ejemplo:
En este ejemplo, se seleccionan los cargos asignados a varios empleados en la región de Washington. Llama al procedimiento EnumFields, que se incluye en el ejemplo de la instrucción 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
Vea también
- Acceso al foro de desarrolladores
- Acceso a la ayuda en support.office.com
- Acceso a foros en UtterAccess
- Acceso al centro de ayuda de programadores VBA y desarrolladores (FMS)
- Acceso a las publicaciones en StackOverflow
Soporte técnico y comentarios
¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.