Предложение HAVING (Microsoft Access SQL)
Область применения: Access 2013 | Access 2016
Указывает, какие сгруппированные записи отображаются в инструкции SELECT с предложением GROUP BY. После объединения записей GROUP BY функция HAVING отображает все записи, сгруппированные по предложению GROUP BY, которые соответствуют условиям предложения HAVING.
Синтаксис
SELECT fieldlist FROM table WHERE selectcriteria GROUP BY groupfieldlist [HAVING groupcriteria ]
Инструкция SELECT, содержащая предложение HAVING, состоит из следующих частей:
Part | Описание |
---|---|
fieldlist | Имя извлекаемого поля или полей вместе с псевдонимами имени полей, агрегатными функциями SQL, предикатами выбора (ALL, DISTINCTROW или TOP) или другими параметрами инструкции SELECT. |
table | Имя таблицы, из которой извлекаются записи. Дополнительные сведения см. в предложении FROM . |
selectcriteria | Критерии выбора. Если инструкция содержит предложение WHERE , ядро СУБД Microsoft Access группируют значения после применения условий WHERE к записям. |
groupfieldlist | Имена до 10 полей, используемых для группирования записей. Порядок имен полей в списке groupfieldlist определяет уровни группировки от верхнего до самого низкого уровня группировки. |
groupcriteria | Выражение, определяющее, какие сгруппированные записи следует отобразить. |
Замечания
HAVING является необязательным.
HAVING похож на WHERE, который определяет, какие записи выбраны. После группирования записей с помощью GROUP BY, HAVING определяет, какие записи отображаются:
SELECT CategoryID,
Sum(UnitsInStock)
FROM Products
GROUP BY CategoryID
HAVING Sum(UnitsInStock) > 100 And Like "BOS*";
Предложение HAVING может содержать до 40 выражений, связанных логическими операторами, такими как And и Or.
Пример
В этом примере выбираются должности, назначенные нескольким сотрудникам в регионе Вашингтон. В этом примере выполняется вызов процедуры EnumFields, который вы можете найти в примере для оператора 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
См. также
- Форум для разработчиков Access
- Помощь при работе с Access на support.office.com
- Форумы Access на UtterAccess
- Справочный центр (FMS) для разработки и VBA программирования для Access
- Публикации по Access на StackOverflow
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.