SELECT — HAVING (Transact-SQL)SELECT - HAVING (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL Azure даAzure Synapse Analytics (хранилище данных SQL) даParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

Определяет условие поиска для группы или статистического выражения.Specifies a search condition for a group or an aggregate. Предложение HAVING можно использовать только в инструкции SELECT.HAVING can be used only with the SELECT statement. HAVING обычно используется с предложением GROUP BY.HAVING is typically used with a GROUP BY clause. Если предложение GROUP BY не используется, имеется одна неявная агрегированная группа.When GROUP BY is not used, there is an implicit single, aggregated group.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQLTopic link icon Transact-SQL Syntax Conventions

СинтаксисSyntax

[ HAVING <search condition> ]  

АргументыArguments

<search_condition> задает один или несколько предикатов, которые должны выполняться для групп или агрегатов.<search_condition> Specifies one or more predicates for groups and/or aggregates to meet. Дополнительные сведения об условиях поиска и предикатах см. в статье Условие поиска (Transact-SQL).For more information about search conditions and predicates, see Search Condition (Transact-SQL).

Типы данных text, image и ntext нельзя использовать в предложении HAVING.The text, image, and ntext data types cannot be used in a HAVING clause.

ПримерыExamples

В следующем примере, который использует простое предложение HAVING, из таблицы SalesOrderID извлекается сумма всех полей SalesOrderDetail, значение которых превышает $100000.00.The following example that uses a simple HAVING clause retrieves the total for each SalesOrderID from the SalesOrderDetail table that exceeds $100000.00.

USE AdventureWorks2012 ;  
GO  
SELECT SalesOrderID, SUM(LineTotal) AS SubTotal  
FROM Sales.SalesOrderDetail  
GROUP BY SalesOrderID  
HAVING SUM(LineTotal) > 100000.00  
ORDER BY SalesOrderID ;  

Примеры: Azure Synapse Analytics (хранилище данных SQL)Azure Synapse Analytics (SQL DW) и Параллельное хранилище данныхParallel Data WarehouseExamples: Azure Synapse Analytics (хранилище данных SQL)Azure Synapse Analytics (SQL DW) and Параллельное хранилище данныхParallel Data Warehouse

В приведенном ниже примере предложение HAVING используется с целью получения суммы для каждого SalesAmount в таблице FactInternetSales, для которого OrderDateKey относится к 2004 или более позднему году.The following example uses a HAVING clause to retrieve the total for each SalesAmount from the FactInternetSales table when the OrderDateKey is in the year 2004 or later.

-- Uses AdventureWorks  
  
SELECT OrderDateKey, SUM(SalesAmount) AS TotalSales   
FROM FactInternetSales  
GROUP BY OrderDateKey   
HAVING SUM(SalesAmount) > 80000  
ORDER BY OrderDateKey;  

См. также:See Also

GROUP BY (Transact-SQL) GROUP BY (Transact-SQL)
WHERE (Transact-SQL)WHERE (Transact-SQL)