Condividi tramite


PRODOTTO (Transact-SQL)

Vale a:Applica a: SQL Server 2025 (17.x) Azure SQL DatabaseAzure Synapse AnalyticsSQL database in Microsoft Fabric

Restituisce il prodotto di tutti i valori, o solo i valori DISTINCT, nell'espressione. Usare solo con colonne numeriche. I valori Null vengono ignorati.

Convenzioni relative alla sintassi Transact-SQL

Syntax

Sintassi della funzione di aggregazione.

PRODUCT ( [ ALL | DISTINCT ] expression )

Sintassi della funzione analitica.

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

Arguments

ALL

Applica la funzione di aggregazione a tutti i valori. ALL è l'impostazione predefinita.

DISTINCT

Specifica che PRODUCT restituisce il prodotto di valori univoci.

expression

Costante, colonna o funzione e qualsiasi combinazione di operatori aritmetici, bit per bit e stringhe. expression è un'espressione della categoria esatta di tipi di dati numerici o numerici approssimativi, ad eccezione del tipo di dati bit . Le funzioni di aggregazione e le sottoquery non sono consentite. Per altre informazioni, vedere Espressioni.

CAMBIO ( [ partition_by_clause ] [ order_by_clause ] )

Determina il partizionamento e l'ordinamento di un set di righe prima dell'applicazione della funzione.

partition_by_clause divide il set di risultati prodotto dalla FROM clausola in partizioni a cui viene applicata la funzione. Se non specificato, la funzione tratta tutte le righe del set di risultati della query come un unico gruppo.

order_by_clause determina l'ordine logico in cui viene eseguita l'operazione. Per altre informazioni, vedere clausola SELECT - OVER.

Tipi restituiti

Restituisce il prodotto di tutti i valori di espressione nel tipo di dati di espressione più preciso.

Risultato dell'espressione Tipo di ritorno
tinyint int
smallint int
int int
bigint bigint
categoria decimale (p, s) Se (s == 0): decimale(38, 0) Altrimenti: decimale(38, 6)
categoria money e smallmoney money
float e categoria reale float

Remarks

PRODUCT è una funzione deterministica se utilizzata senza le OVER clausole e ORDER BY . È non deterministico se specificato con le OVER clausole e ORDER BY . Per altre informazioni, vedere Funzioni deterministiche e non deterministiche.

Examples

Gli esempi di codice in questo articolo usano il database di esempio AdventureWorks2025 o AdventureWorksDW2025, che è possibile scaricare dalla home page Microsoft SQL Server Samples and Community Projects.

A. Moltiplicare le righe insieme

Gli esempi seguenti illustrano l'uso della funzione PRODUCT

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

Di seguito è riportato un set di risultati parziale.

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

B. Usare la clausola OVER

Nell'esempio seguente viene utilizzata la funzione PRODUCT con la clausola OVER per fornire un tasso di rendimento sugli strumenti finanziari ipotetici. I dati sono partizionati da 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);

Il set di risultati è il seguente.

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