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 базу данных ORAdventureWorksDW2025, которую можно скачать из репозитория GitHub Azure Data Samples SQL Repository

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

В следующем примере используется 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;