Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse
Analytics Warehouse in Microsoft Fabric
SQL database in Microsoft Fabric
La PRODUCT fonction retourne le produit de toutes les valeurs, ou seulement des DISTINCT valeurs, dans une expression. Utiliser uniquement avec des colonnes numériques. Les valeurs NULL sont ignorées.
Conventions de la syntaxe Transact-SQL
Syntax
Syntaxe des fonctions agrégées :
PRODUCT ( [ ALL | DISTINCT ] expression )
Syntaxe de la fonction analytique :
PRODUCT ( [ ALL ] expression) OVER ( [ partition_by_clause ] [ order_by_clause ] )
Arguments
ALL
Applique la fonction d'agrégation à toutes les valeurs.
ALL est la valeur par défaut.
DISTINCTIF
Spécifie que renvoie PRODUCT le produit de valeurs uniques.
expression
Constante, colonne ou fonction, et toute combinaison d’opérateurs arithmétiques, au niveau du bit et de chaîne. expression est une expression de la catégorie de type de données numérique exacte ou approximative, à l’exception du type de données bit . Les fonctions d’agrégation et les sous-requêtes ne sont pas autorisées. Pour plus d’informations, consultez expressions.
TERMINÉ ( [ partition_by_clause ] [ order_by_clause ] )
Détermine le partitionnement et l’ordre d’un ensemble de lignes avant l’application de la fonction.
partition_by_clause divise le jeu de résultats généré par la FROM clause en partitions auxquelles la fonction est appliquée. S'il n'est pas spécifié, la fonction gère toutes les lignes du jeu de résultats de la requête en un seul groupe.
order_by_clause détermine l’ordre logique dans lequel l’opération est effectuée. Pour plus d’informations, consultez la clause SELECT - OVER.
Types de retour
Retourne le produit de toutes les valeurs d’expression dans le type de données d’expression le plus précis.
| Résultat de l'expression | Type de retour |
|---|---|
| tinyint | int |
| smallint | int |
| int | int |
| bigint | bigint |
| Catégorie décimale (P, S) | Si s est 0, décimal(38, 0), sinon décimal(38, 6) |
| Catégorie money et smallmoney | money |
| Catégorie float et real | float |
Remarks
Le support de PRODUCT l’instance gérée SQL dans Azure SQL est limité à Azure SQL Managed InstanceAUTD.
PRODUCTest une fonction déterministe lorsqu’elle est utilisée sans les clauses et OVER les ORDER BY clauses. Il n’est pas déterministe lorsqu’il est spécifié avec les clauses et OVER les ORDER BY clauses. Pour plus d’informations, consultez Fonctions déterministes et non déterministes.
Examples
Les exemples de code de cet article utilisent les bases de données d'exemple AdventureWorks2025 ou AdventureWorksDW2025, que vous pouvez télécharger à partir de la page d'accueil Microsoft SQL Server Samples and Community Projects.
A. Multiplier les lignes ensemble
L’exemple suivant utilise la PRODUCT fonction :
SELECT PRODUCT(UnitPrice) AS ProductOfPrices
FROM Purchasing.PurchaseOrderDetail
WHERE ModifiedDate <= '2023-05-24'
GROUP BY ProductId;
Voici l'ensemble des résultats.
ProductOfPrices
----------
2526.2435
41.916
3251.9077
640559.8491
1469352.0378
222137708.073
11432159376.271
5898056028.2633
14030141.2883
2526.4194
B. Utiliser la clause OVER
L’exemple suivant utilise la PRODUCT fonction avec la OVER clause pour fournir un taux de rendement sur des instruments financiers hypothétiques. Les données sont partitionnés par 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);
Voici l'ensemble des résultats.
finInstrument CompoundedReturn
------------- ---------------------------------------
instrumentA 1.163527
instrumentA 1.163527
instrumentA 1.163527
instrumentB 1.048300
instrumentC 1.268900