Udostępnij przez


SELECT — klauzula HAVING (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Określa warunek wyszukiwania grupy lub agregacji. Można użyć HAVING tylko z instrukcją SELECT . Zazwyczaj używasz klauzuli HAVING z klauzulą GROUP BY . Jeśli nie używasz metody GROUP BY, istnieje niejawna grupa zagregowana.

Transact-SQL konwencje składni

Syntax

[ HAVING <search condition> ]

Arguments

<search_condition>

Określa co najmniej jeden predykat dla grup i agregacji, które grupy muszą spełniać. Aby uzyskać więcej informacji na temat warunków wyszukiwania i predykatów, zobacz Warunek wyszukiwania.

W klauzuli nie można używać typów danych tekstowych, obrazów i ntekstówHAVING.

Examples

Przykłady kodu w tym artykule korzystają z przykładowej bazy danych AdventureWorks2025 lub AdventureWorksDW2025, którą można pobrać ze strony głównej Przykładów programu Microsoft SQL Server i projektów społeczności.

A. Pobieranie sumy dla każdego zamówienia sprzedaży

W poniższym przykładzie użyto klauzuli , aby pobrać sumę HAVING dla każdej SalesOrderID z SalesOrderDetail tabeli, która przekracza $100000.00wartość .

USE AdventureWorks2025;
GO

SELECT SalesOrderID,
       SUM(LineTotal) AS SubTotal
FROM Sales.SalesOrderDetail
GROUP BY SalesOrderID
HAVING SUM(LineTotal) > 100000.00
ORDER BY SalesOrderID;

Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)

B. Pobieranie całkowitej sprzedaży przekraczającej daną wartość

W poniższym przykładzie użyto klauzuli , aby pobrać sumę HAVINGSalesAmount przekraczającą 80000 wartość dla każdej OrderDateKey z FactInternetSales tabeli.

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