Sdílet prostřednictvím


SELECT – klauzule HAVING (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Určuje podmínku hledání pro skupinu nebo agregaci. Můžete použít HAVING pouze s příkazem SELECT . Obvykle se používá HAVING s klauzulí GROUP BY . Pokud nepoužíváte GROUP BY, existuje implicitní jedna agregovaná skupina.

Transact-SQL konvence syntaxe

Syntax

[ HAVING <search condition> ]

Arguments

<search_condition>

Určuje jeden nebo více predikátů pro skupiny a agregace, které skupiny potřebují splnit. Další informace o podmínkách hledání a predikátů najdete v tématu Podmínka hledání.

V klauzuli nelze použít datové typy textu, obrázku a ntextuHAVING.

Examples

Ukázky kódu v tomto článku používají ukázkovou databázi AdventureWorks2025 nebo AdventureWorksDW2025, kterou si můžete stáhnout z domovské stránky Microsoft SQL Serveru pro ukázky a komunitní projekty .

A. Načtení součtu pro každou prodejní objednávku

Následující příklad používá HAVING klauzuli k načtení součtu pro každý SalesOrderID z SalesOrderDetail tabulky, která překračuje $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;

Příklady: Azure Synapse Analytics a Analytický platformový systém (PDW)

B. Načtení celkového prodeje překračující danou hodnotu

Následující příklad používá HAVING klauzuli k načtení součtu SalesAmount , který přesahuje 80000 pro každou OrderDateKey z FactInternetSales tabulky.

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