SELECT - ПРЕДЛОЖЕНИЕ HAVING (Transact-SQL)

Относится к:SQL ServerБаза данных SQL AzureУправляемый экземпляр SQL AzureAzure Synapse AnalyticsSQL аналитическая конечная точка в Microsoft FabricХранилище в Microsoft FabricSQL база данных в Microsoft Fabric

Определяет условие поиска для группы или статистического выражения. Можно использовать HAVING только с инструкцией SELECT . Как правило, используется HAVING с предложением GROUP BY . Если вы не используете GROUP BY, существует неявная агрегированная группа.

Соглашения о синтаксисе Transact-SQL

Syntax

[ HAVING <search condition> ]

Arguments

<search_condition>

Указывает один или несколько предикатов для групп и агрегатов, которые должны соответствовать группам. Дополнительные сведения об условиях поиска и предикаатах см. в разделе "Условие поиска".

В предложении нельзя использовать типы данных текста, изображения и HAVING.

Examples

Образцы кода в этой статье используют AdventureWorks2025, AdventureWorksDW2025или AdventureWorksLT2025 примерную базу данных, которую можно скачать из репозитория GitHub Azure Data Data SQL Samples Repository (Сэмпл SQL).

А. Получение итогов для каждого заказа на продажу

В следующем примере используется HAVING предложение для получения итогового значения для каждой SalesOrderIDSalesOrderDetail из таблицы, превышающей.$100000.00

USE AdventureWorks2025;
GO

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

Примеры: Azure Synapse Analytics

В. Получение общего объема продаж, превышающего заданное значение

В приведенном ниже примере предложение HAVING используется с целью получения общей суммы SalesAmount, превышающей 80000 для каждого OrderDateKey из таблицы FactInternetSales.

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