Freigeben über


PRODUKT (Transact-SQL)

Gilt für: SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsWarehouse in Microsoft Fabric SQLdatabase in Microsoft Fabric

Die PRODUCT Funktion gibt das Produkt aller Werte, oder nur der Werte DISTINCT , in einem Ausdruck zurück. Wird nur für numerische Spalten verwendet. NULL-Werte werden ignoriert.

Transact-SQL-Syntaxkonventionen

Syntax

Syntax der aggregierten Funktionen:

PRODUCT ( [ ALL | DISTINCT ] expression )

Analysefunktionssyntax:

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

Arguments

ALL

Wendet die Aggregatfunktion auf alle Werte an. ALL ist die Standardeinstellung.

EINDEUTIG

Spezifiziert, dass PRODUCT das Produkt eindeutiger Werte zurückgibt.

expression

Eine Konstante, Spalte oder Funktion sowie eine beliebige Kombination aus arithmetischen, bitweisen und Zeichenfolgenoperatoren. Ausdruck ist ein Ausdruck der genauen numerischen oder ungefähren Numerischen Datentypkategorie, mit Ausnahme des Bitdatentyps . Aggregatfunktionen und Unterabfragen sind nicht zulässig. Weitere Informationen finden Sie unter Expressions.

ÜBER ( [ partition_by_clause ] [ order_by_clause ] )

Bestimmt die Partitionierung und Sortierung eines Rowsets, bevor die Funktion angewendet wird.

partition_by_clause dividiert das von der FROM Klausel erzeugte Resultset in Partitionen, auf die die Funktion angewendet wird. Wird dies nicht angegeben, verarbeitet die Funktion alle Zeilen des Abfrageresultsets als einzelne Gruppe.

order_by_clause bestimmt die logische Reihenfolge, in der der Vorgang ausgeführt wird. Weitere Informationen finden Sie unter SELECT - OVER-Klausel.

Rückgabetypen

Gibt das Produkt aller Ausdruckswerte im präzisesten Ausdrucksdatentyp zurück.

Ausdrucksergebnis Rückgabetyp
tinyint int
smallint int
int int
bigint bigint
Dezimalkategorie (P, S) Wenn s , dezimal(38, 0) ist0, ansonsten dezimal(38, 6)
Money und Smallmoney Kategorie money
Float und reale Kategorie float

Remarks

Die Unterstützung für PRODUCT in Azure SQL Managed Instance ist auf Azure SQL Managed InstanceAUTD beschränkt.

PRODUCT ist eine deterministische Funktion, wenn sie ohne die OVER Und-Klauseln ORDER BY verwendet wird. Sie ist nicht deterministisch, wenn sie mit den OVER Und-Klauseln ORDER BY angegeben wird. Weitere Informationen finden Sie unter Deterministische und nicht deterministische Funktionen.

Examples

Die Codebeispiele in diesem Artikel verwenden die AdventureWorks2025- oder AdventureWorksDW2025 Beispieldatenbank, die Sie von der Microsoft SQL Server Samples and Community Projects Homepage herunterladen können.

A. Multiplizieren von Zeilen

Das folgende Beispiel verwendet die Funktion PRODUCT :

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

Hier ist das Ergebnis.

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

B. Verwenden der OVER-Klausel

Das folgende Beispiel verwendet die PRODUCT Funktion mit der OVER Klausel, um eine Rendite für hypothetische Finanzinstrumente bereitzustellen. Die Daten werden von 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 ist das Ergebnis.

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