共用方式為


產品(Transact-SQL)

適用於: SQL Server 2025 (17.x) Azure SQL Database AzureSQL Managed InstanceAzure Synapse AnalyticsWarehouse in Microsoft FabricSQL database in Microsoft Fabric

函數會 PRODUCT 回傳所有值的乘積,或僅 DISTINCT 回傳表達式中的值。 僅搭配數值數據行使用。 會忽略 Null 值。

Transact-SQL 語法慣例

Syntax

聚合函數語法:

PRODUCT ( [ ALL | DISTINCT ] expression )

解析函數語法:

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

Arguments

ALL

將聚合函數套用至所有值。 ALL 是預設值。

獨特的

指定 返回 PRODUCT 唯一值的乘積。

expression

常數、數據行或函式,以及算術、位和字串運算元的任何組合。 expression 是精確數值或近似數值數據類型類別目錄的運算式,但 數據類型除外。 不允許聚合函數和子查詢。 如需詳細資訊,請參閱運算式

超過 ( [ partition_by_clause ] [ order_by_clause ] )

在套用函式之前,決定數據列集的數據分割和排序。

partition_by_clause 會將子句所 FROM 產生的結果集分割成套用函式的分割區。 如未指定,此函數會將查詢結果集的所有資料列視為單一群組。

order_by_clause 可決定執行作業的邏輯順序。 如需相關資訊,請參閱 SELECT - OVER 子句

傳回類型

傳回最精確 表達式 數據類型中所有 表達式 值的乘積。

運算式結果 傳回類型
tinyint int
smallint int
int int
bigint bigint
十進位 範疇 (ps s0則小數(38, 0);否則 為小數(38, 6)
moneysmallmoney 類別 money
floatreal category float

Remarks

Azure SQL Managed Instance 的支援 PRODUCT 僅限於 Azure SQL Managed InstanceAUTD

PRODUCT 在不使用 OVERORDER BY 子句的情況下,是具決定性的函式。 使用 和 OVER 子句指定ORDER BY時,這是不具決定性的。 如需詳細資訊,請參閱確定性與非確定性函式

Examples

本文中的程式代碼範例會使用 AdventureWorks2025AdventureWorksDW2025 範例資料庫,您可以從 Microsoft SQL Server 範例和社群專案 首頁下載。

A. 將數據列相乘

以下範例使用了以下 PRODUCT 函數:

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

結果如下。

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

B. 使用 OVER 子句

以下範例利用 PRODUCTOVER 數與子句來提供假設金融工具的報酬率。 數據是由 分割。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);

結果如下。

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