Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a: SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse
Analytics Warehouse in Microsoft Fabric
SQL 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