Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Applies to:
SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL analytics endpoint in Microsoft Fabric
Warehouse in Microsoft Fabric
SQL database in Microsoft Fabric
Specifies a search condition for a group or an aggregate. You can use HAVING only with the SELECT statement. Typically, you use HAVING with a GROUP BY clause. When you don't use GROUP BY, there's an implicit single, aggregated group.
Transact-SQL syntax conventions
Syntax
[ HAVING <search condition> ]
Arguments
<search_condition>
Specifies one or more predicates for groups and aggregates that the groups need to meet. For more information about search conditions and predicates, see Search condition.
You can't use the text, image, and ntext data types in a HAVING clause.
Examples
The code samples in this article use the AdventureWorks2025 or AdventureWorksDW2025 sample database, which you can download from the Microsoft SQL Server Samples and Community Projects home page.
A. Retrieve total for each sales order
The following example uses a HAVING clause to retrieve the total for each SalesOrderID from the SalesOrderDetail table that exceeds $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;
Examples: Azure Synapse Analytics and Analytics Platform System (PDW)
B. Retrieve total sales exceeding a given value
The following example uses a HAVING clause to retrieve the total SalesAmount that exceeds 80000 for each OrderDateKey from the FactInternetSales table.
-- Uses AdventureWorks
SELECT OrderDateKey,
SUM(SalesAmount) AS TotalSales
FROM FactInternetSales
GROUP BY OrderDateKey
HAVING SUM(SalesAmount) > 80000
ORDER BY OrderDateKey;