Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 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