Предложение 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 

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.