Поделиться через


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

Применимо к:SQL ServerБаза данных Azure SQLУправляемый экземпляр Azure SQLAzure Synapse AnalyticsСистема платформы аналитики (PDW)Конечная точка SQL аналитики в Microsoft FabricХранилище в Microsoft FabricБаза данных SQL в Microsoft Fabric

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

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

Syntax

[ HAVING <search condition> ]

Arguments

<search_condition>

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

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

Examples

Примеры кода в этой статье используют базу данных образца AdventureWorks2025 или AdventureWorksDW2025, которую можно скачать с домашней страницы образцов и проектов сообщества Microsoft SQL Server и.

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

В следующем примере используется HAVING предложение для получения итогового значения для каждой SalesOrderDetailSalesOrderID из таблицы, превышающей.$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 и система платформы аналитики (PDW)

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

В приведенном ниже примере предложение 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;