SELECT - cláusula HAVING (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureAzure SQL Managed InstanceAzure Synapse AnalyticsEndpoint de análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de dados SQL no Microsoft Fabric

Especifica uma condição de pesquisa para um grupo ou uma agregação. Só pode usar HAVING com a SELECT declaração. Normalmente, usa-se HAVING com uma GROUP BY cláusula. Quando não usas GROUP BY, existe um grupo agregado implícito.

Transact-SQL convenções de sintaxe

Syntax

[ HAVING <search condition> ]

Arguments

<search_condition>

Especifica um ou mais predicados para grupos e agregados que os grupos precisam de cumprir. Para obter mais informações sobre condições e predicados de pesquisa, consulte Condição de pesquisa.

Não podes usar os tipos de texto, imagem e dados ntext numa HAVING cláusula.

Examples

Os exemplos de código neste artigo utilizam a AdventureWorks2025 base de dados de exemplos ORAdventureWorksDW2025, que pode descarregar do repositório GitHub do Azure Data SQL Samples Repository.

A. Recuperar o total de cada encomenda de venda

O exemplo seguinte usa uma HAVING cláusula para recuperar o total para cada SalesOrderID a partir da SalesOrderDetail tabela que excede $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;

Exemplos: Azure Synapse Analytics

B. Recuperar vendas totais que excedam um determinado valor

O exemplo a seguir usa uma HAVING cláusula para recuperar o total SalesAmount que excede 80000 para cada OrderDateKey um da FactInternetSales tabela.

-- Uses AdventureWorks
SELECT OrderDateKey,
       SUM(SalesAmount) AS TotalSales
FROM FactInternetSales
GROUP BY OrderDateKey
HAVING SUM(SalesAmount) > 80000
ORDER BY OrderDateKey;