SELECT - HAVING 子句 (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsMicrosoft Fabric中的SQL分析端点Microsoft Fabric中的仓库Microsoft Fabric中的SQL数据库

指定组或聚合的搜索条件。 只能与语句一 HAVING 起使用 SELECT 。 通常,与子句一HAVINGGROUP BY起使用。 不使用 GROUP BY时,会有一个隐式的聚合组。

Transact-SQL 语法约定

Syntax

[ HAVING <search condition> ]

Arguments

<search_condition>

为组和聚合指定一个或多个组需要满足的谓词。 有关搜索条件和谓词的详细信息,请参阅 搜索条件。

不能在子句中使用文本、图像和 HAVING 数据类型。

Examples

本文中的代码示例使用AdventureWorks2025了 、 AdventureWorksDW2025或AdventureWorksLT2025示例数据库,您可以从 Azure Data SQL Samples Repository 的 GitHub 仓库下载。

答: 检索每个销售订单的总计

下面的示例使用一个HAVING子句从超过SalesOrderID的表中检索每个SalesOrderDetail子句的$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

B. 检索超过给定值的总销售额

以下示例使用 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;