Compartir por


PRODUCTO (Transact-SQL)

Aplica a: SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceAzure SynapseAnalytics Warehouse in Microsoft FabricSQL database in Microsoft Fabric

La PRODUCT función devuelve el producto de todos los valores, o solo de los DISTINCT valores, en una expresión. Use solo con columnas numéricas. Se omiten los valores NULL.

Convenciones de sintaxis de Transact-SQL

Syntax

Sintaxis agregada de la función:

PRODUCT ( [ ALL | DISTINCT ] expression )

Sintaxis de función analítica:

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

Arguments

ALL

Aplica la función de agregado a todos los valores. ALL es el valor predeterminado.

DISTINTO

Especifica que PRODUCT devuelve el producto de valores únicos.

expression

Constante, columna o función, y cualquier combinación de operadores aritméticos, bit a bit y de cadena. expression es una expresión de la categoría de tipo de datos numérico exacto o numérico aproximado, excepto para el tipo de datos bit . No se permiten funciones de agregado ni subconsultas. Para obtener más información, vea expresiones de .

CAMBIO ( [ partition_by_clause ] [ order_by_clause ] )

Determina la creación de particiones y el orden de un conjunto de filas antes de aplicar la función.

partition_by_clause divide el conjunto de resultados generado por la FROM cláusula en particiones a las que se aplica la función. Si no se especifica, la función trata todas las filas del conjunto de resultados de la consulta como un único grupo.

order_by_clause determina el orden lógico en el que se realiza la operación. Para obtener más información, vea CLÁUSULA SELECT - OVER.

Tipos de retorno

Devuelve el producto de todos los valores de expresión en el tipo de datos de expresión más preciso.

Resultado de la expresión Tipo de retorno
tinyint int
smallint int
int int
bigint bigint
Categoría decimal (P, S) Si s es 0, decimal(38, 0), si no, decimal(38, 6)
categoría money y smallmoney money
float y real category float

Remarks

El soporte para PRODUCT en Azure SQL Managed Instance está limitado a Azure SQL Managed InstanceAUTD.

PRODUCT es una función determinista cuando se usa sin las OVER cláusulas y ORDER BY . No es determinista cuando se especifica con las OVER cláusulas y ORDER BY . Para más información, vea Funciones deterministas y no deterministas.

Examples

Los ejemplos de código de este artículo usan la base de datos de ejemplo de AdventureWorks2025 o AdventureWorksDW2025, que puede descargar de la página principal de Ejemplos de Microsoft SQL Server y proyectos de comunidad.

A. Multiplicar filas juntas

El siguiente ejemplo utiliza la PRODUCT función:

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

Este es el conjunto de resultados.

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

B. Uso de la cláusula OVER

El siguiente ejemplo utiliza la PRODUCT función con la OVER cláusula para proporcionar una tasa de rentabilidad sobre instrumentos financieros hipotéticos. Los datos se particionan mediante 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);

Este es el conjunto de resultados.

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