Partilhar 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 devolve o produto de todos os valores, ou apenas dos DISTINCT valores, numa expressão. Use apenas com colunas numéricas. Os valores nulos são ignorados.

Transact-SQL convenções de sintaxe

Syntax

Sintaxe agregada da função:

PRODUCT ( [ ALL | DISTINCT ] expression )

Sintaxe da 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 devolve o produto de valores únicos.

expression

Uma constante, coluna ou função, e qualquer combinação de operadores aritméticos, bitwise e string. expression é uma expressão da categoria de tipo de dados numéricos exatos ou numéricos aproximados, exceto para o tipo de dados de bits . Funções agregadas e subconsultas não são permitidas. Para obter mais informações, consulte Expressões.

MAIS ( [ 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 especificada, a função trata todas as linhas do conjunto de resultados da consulta como um único grupo.

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

Tipos de devolução

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)
Categoria dinheiro e dinheiro pequeno money
flutuador e categoria real float

Remarks

O suporte para PRODUCT no Azure SQL Managed Instance é 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, consulte 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 pode ser descarregado da página inicial de Exemplos e Projetos da Comunidade do Microsoft SQL Server.

A. Multiplicar linhas juntas

O exemplo seguinte utiliza a PRODUCT função:

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

Aqui está 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. Utilize a cláusula OVER

O exemplo seguinte utiliza 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);

Aqui está o conjunto de resultados.

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