Compartilhar via


PRODUTO (Transact-SQL)

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

A PRODUCT função retorna o produto de todos os valores, ou apenas dos DISTINCT valores, em uma expressão. Use somente com colunas numéricas. Valores nulos são ignorados.

Convenções de sintaxe de Transact-SQL

Syntax

Sintaxe agregada da função:

PRODUCT ( [ ALL | DISTINCT ] expression )

Sintaxe de função analítica:

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

Arguments

ALL

Aplica a função de agregação a todos os valores. ALL é o padrão.

DISTINTO

Especifica que PRODUCT retorna o produto de valores únicos.

expression

Uma constante, coluna ou função e qualquer combinação de operadores aritméticos, bit a bits e cadeia de caracteres. expressão é uma expressão da categoria exata de tipo de dados numérico ou numérico aproximado, exceto para o tipo de dados de bit . Funções e subconsultas de agregação não são permitidas. Para obter mais informações, consulte Expressions.

ENCERRADO ( [ partition_by_clause ] [ order_by_clause ] )

Determina o particionamento e a ordenação de um conjunto de linhas antes que a função seja aplicada.

partition_by_clause divide o conjunto de resultados produzido pela FROM cláusula em partições às quais a função é aplicada. Se não for especificado, a função tratará todas as linhas do conjunto de resultados da consulta como um único grupo.

order_by_clause determina a ordem lógica na qual a operação é executada. Para obter mais informações, consulte a cláusula SELECT - OVER.

Tipos de retorno

Retorna o produto de todos os valores de expressão no tipo de dados de expressão mais preciso.

Resultado da expressão Tipo de retorno
tinyint int
smallint int
int int
bigint bigint
Categoria decimal (P, S) Se s é 0, decimal(38, 0), caso contrário decimal(38, 6)
money e smallmoney category money
float e categoria real float

Remarks

O suporte para PRODUCT Managed Instance em Azure SQL é limitado ao Azure SQL ManagedInstance AUTD.

PRODUCT é uma função determinística quando usada sem as OVER cláusulas e ORDER BY . É não determinístico quando especificado com as OVER cláusulas e ORDER BY . Para obter mais informações, confira Funções determinísticas e não determinísticas.

Examples

Os exemplos de código neste artigo usam o banco de dados de exemplo AdventureWorks2025 ou AdventureWorksDW2025, que você pode baixar na página inicial Microsoft SQL Server Samples and Community Projects.

A. Multiplicar linhas juntas

O exemplo a seguir utiliza a PRODUCT função:

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

Veja aqui o 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. Usar a cláusula OVER

O exemplo a seguir usa a PRODUCT função com a OVER cláusula para fornecer uma taxa de retorno sobre instrumentos financeiros hipotéticos. Os dados são particionados por 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);

Veja aqui o conjunto de resultados.

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