Share via


PRODUCT (Transact-SQL)

Van toepassing op: SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsWarehouse in Microsoft Fabric SQLdatabase in Microsoft Fabric

De PRODUCT functie geeft het product van alle waarden, of alleen de DISTINCT waarden, terug in een uitdrukking. Alleen gebruiken met numerieke kolommen. Null-waarden worden genegeerd.

Transact-SQL syntaxis-conventies

Syntax

Aggregate functiesyntaxis:

PRODUCT ( [ ALL | DISTINCT ] expression )

Syntaxis van analysefunctie:

PRODUCT ( [ ALL ] expression) OVER ( [ partition_by_clause ] [ order_by_clause ] )

Arguments

ALL

Hiermee past u de statistische functie toe op alle waarden. ALL is de standaardwaarde.

ONDERSCHEIDEND

Specificeert dat PRODUCT het product van unieke waarden teruggeeft.

expression

Een constante, kolom of functie, en elke combinatie van rekenkundige, bitsgewijze en tekenreeksoperatoren. expressie is een expressie van de exacte numerieke of geschatte numerieke gegevenstypecategorie, met uitzondering van het bitgegevenstype . Statistische functies en subquery's zijn niet toegestaan. Zie Expressies voor meer informatie.

OVER ( [ partition_by_clause ] [ order_by_clause ] )

Bepaalt de partitionering en volgorde van een rijenset voordat de functie wordt toegepast.

partition_by_clause verdeelt de resultatenset die door de FROM component wordt geproduceerd in partities waarop de functie wordt toegepast. Als deze niet is opgegeven, behandelt de functie alle rijen van de queryresultatenset als één groep.

order_by_clause bepaalt de logische volgorde waarin de bewerking wordt uitgevoerd. Zie SELECT - OVER-component voor meer informatie.

Retourtypen

Retourneert het product van alle expressiewaarden in het meest nauwkeurige expressiegegevenstype .

Expressieresultaat Resultaattype
tinyint int
smallint int
int int
bigint bigint
Decimale categorie (P, S) Als s , decimaal(38, 0) is0, anders decimaal(38, 6)
geld en smallmoney categorie money
float en echte categorie float

Remarks

Ondersteuning voor PRODUCT in Azure SQL Managed Instance is beperkt tot Azure SQL Managed InstanceAUTD.

PRODUCT is een deterministische functie wanneer deze wordt gebruikt zonder de OVER en ORDER BY componenten. Het is niet-deterministisch wanneer deze is opgegeven met de OVER en ORDER BY componenten. Zie Deterministische en niet-deterministische functiesvoor meer informatie.

Examples

De codevoorbeelden in dit artikel gebruiken de AdventureWorks2025 of AdventureWorksDW2025 voorbeelddatabase die u kunt downloaden van de startpagina van Microsoft SQL Server Samples en Community Projects .

A. Rijen samen vermenigvuldigen

Het volgende voorbeeld gebruikt de PRODUCT functie:

SELECT PRODUCT(UnitPrice) AS ProductOfPrices
FROM Purchasing.PurchaseOrderDetail
WHERE ModifiedDate <= '2023-05-24'
GROUP BY ProductId;

Hier is het resultatenoverzicht.

ProductOfPrices
----------
2526.2435
41.916
3251.9077
640559.8491
1469352.0378
222137708.073
11432159376.271
5898056028.2633
14030141.2883
2526.4194

B. De OVER-clausule gebruiken

Het volgende voorbeeld gebruikt de PRODUCT functie met de OVER clausule om een rendement te geven op hypothetische financiële instrumenten. De gegevens worden gepartitioneerd door finInstrument.

SELECT finInstrument,
       PRODUCT(1 + rateOfReturn) OVER (PARTITION BY finInstrument) AS CompoundedReturn
FROM (VALUES (0.1626, 'instrumentA'),
             (0.0483, 'instrumentB'),
             (0.2689, 'instrumentC'),
             (-0.1944, 'instrumentA'),
             (0.2423, 'instrumentA')
) AS MyTable(rateOfReturn, finInstrument);

Hier is het resultatenoverzicht.

finInstrument CompoundedReturn
------------- ---------------------------------------
instrumentA   1.163527
instrumentA   1.163527
instrumentA   1.163527
instrumentB   1.048300
instrumentC   1.268900