Dela via


PRODUCT (Transact-SQL)

Gäller för:Gäller för: SQL Server 2025 (17.x) Förhandsversion av Azure SQL DatabaseAzure Synapse AnalyticsSQL-databas i Förhandsversion av Microsoft Fabric

Returnerar PRODUKTEN för alla värden, eller endast DISTINCT-värdena, i uttrycket. Använd endast med numeriska kolumner. Null-värden ignoreras.

Transact-SQL syntaxkonventioner

Syntax

Aggregerad funktionssyntax.

PRODUCT ( [ ALL | DISTINCT ] expression )

Analysfunktionssyntax.

PRODUCT ( [ ALL ] expression) OVER ( [ PARTITION BY clause ] ORDER BY clause)

Arguments

ALL

Tillämpar aggregeringsfunktionen på alla värden. ALLA är standardvärdet.

DISTINCT

Anger att PRODUCT returnerar PRODUKT med unika värden.

expression

En konstant, kolumn eller funktion och valfri kombination av aritmetiska operatorer, bitvis och strängoperatorer. expression är ett uttryck för den exakta numeriska eller ungefärliga kategorin för numerisk datatyp, förutom bitdatatypen . Mängdfunktioner och underfrågor är inte tillåtna. Mer information finns i Uttryck.

ÖVER ( [ PARTITION BY-sats ] ORDER BY-sats )

Avgör partitionering och ordning för en raduppsättning innan funktionen tillämpas.

PARTITION BY -satsen delar upp resultatuppsättningen som skapas av FROM-satsen i partitioner som funktionen tillämpas på. Om det inte anges behandlar funktionen alla rader i frågeresultatuppsättningen som en enda grupp.

ORDER BY -satsen avgör i vilken logisk ordning åtgärden utförs. Required. Mer information finns i OVER-satsen.

Return types

Returnerar produkten av alla uttrycksvärden i den mest exakta uttrycksdatatypen .

Expression result Return type
tinyint int
smallint int
int int
bigint bigint
decimalkategori (p, s) Om (s == 0): decimal(38, 0) Annars: decimal(38, 6)
pengar och smallmoney kategori money
flyttal och verklig kategori float

Remarks

PRODUCT är en deterministisk funktion när den OVER används utan - och-satserna ORDER BY . Det är icke-terministiskt när det OVER anges med - och-satserna ORDER BY . Mer information finns i deterministiska och icke-terministiska funktioner.

Examples

Kodexemplen i den här artikeln använder AdventureWorks2022- eller AdventureWorksDW2022-exempeldatabasen, som du kan ladda ned från startsidan Microsoft SQL Server Samples och Community Projects.

A. Multiplicera rader tillsammans

Följande exempel visar hur du använder funktionen PRODUCT

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

Här är en partiell resultatuppsättning.

ProductOfPrices
----------
2526.2435
41.916
3251.9077
21656.2655
40703.3993
4785336.3939
11432159532.8367
5898056095.7678

B. Använd OVER-satsen

I följande exempel används funktionen PRODUCT med OVER-satsen för att tillhandahålla en avkastning på hypotetiska finansiella instrument. Data partitioneras av 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);

Här är resultatet.

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