Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
Azure 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;