適用対象:: SQL Server 2025 (17.x) プレビュー
Azure SQL Database
Azure Synapse Analytics
SQL データベース
式内のすべての値、または DISTINCT 値のみの PRODUCT を返します。 数値列でのみ使用します。 NULL 値は無視されます。
構文
集計関数の構文。
PRODUCT ( [ ALL | DISTINCT ] expression )
分析関数の構文。
PRODUCT ( [ ALL ] expression) OVER ( [ PARTITION BY clause ] ORDER BY clause)
論争
すべての
集計関数をすべての値に適用します。 ALL が既定値です。
個別
PRODUCT が一意の値の PRODUCT を返すように指定します。
式
定数、列、または関数、および算術演算子、ビット演算子、および文字列演算子の任意の組み合わせ。 expression は、 ビット データ型を除く、正確な数値データ型または近似数値データ型カテゴリの式です。 集計関数とサブクエリは許可されません。 詳細については、「式の」を参照してください。
OVER ( [ PARTITION BY 句 ] ORDER BY 句 )
関数が適用される前の行セットのパーティション分割と順序を決定します。
PARTITION BY
句は、FROM 句によって生成された結果セットを、関数が適用されるパーティションに分割します。 指定しない場合、関数ではクエリ結果セットのすべての行を 1 つのグループとして扱います。
ORDER BY
句は、操作が実行される論理的な順序を決定します。 必須。 詳細については、 OVER 句を参照してください。
戻り値の型
最も正確な 式 データ型のすべての 式 値の積を返します。
式の結果 | 戻り値の型 |
---|---|
tinyint | int |
smallint (スモールイント) | int |
int | int |
ビギント | ビギント |
decimal category (p, s) | If (s == 0): decimal(38, 0) Else: decimal(38, 6) |
money と smallmoney カテゴリ | お金 |
float と real カテゴリ | 浮く |
注釈
PRODUCT
は、 OVER
句と ORDER BY
句なしで使用する場合の決定論的関数です。
OVER
句と ORDER BY
句で指定した場合は、非決定的です。 詳細については、「決定的関数と非決定的関数」を参照してください。
例示
この記事のコード サンプルでは、AdventureWorks2022
または AdventureWorksDW2022
サンプル データベースを使用します。このサンプル データベースは、Microsoft SQL Server サンプルとコミュニティ プロジェクト ホーム ページからダウンロードできます。
A。 行を乗算する
次の例は、PRODUCT 関数の使用を示しています
SELECT PRODUCT(UnitPrice) AS ProductOfPrices
FROM Purchasing.PurchaseOrderDetail
WHERE ModifiedDate <= '2002-05-24'
GROUP BY ProductId;
次に結果セットの一部を示します。
ProductOfPrices
----------
2526.2435
41.916
3251.9077
21656.2655
40703.3993
4785336.3939
11432159532.8367
5898056095.7678
B. OVER 句を使用する
次の例では、OVER 句と共に PRODUCT 関数を使用して、架空の金融商品に対する収益率を提供します。 データは 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