Bagikan melalui


PRODUK (Transact-SQL)

Berlaku untuk: SQL Server 2025 (17.x) Azure SQL Database AzureSQL Managed Instance Azure SQL Managed Warehouse AzureSynapse Analyticsdi Microsoft FabricSQL database di Microsoft Fabric

Fungsi mengembalikan PRODUCT produk dari semua nilai, atau hanya DISTINCT nilai, dalam ekspresi. Gunakan hanya dengan kolom numerik. Nilai null diabaikan.

Konvensi sintaks Transact-SQL

Syntax

Sintaks fungsi agregat:

PRODUCT ( [ ALL | DISTINCT ] expression )

Sintaks fungsi analitik:

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

Arguments

ALL

Menerapkan fungsi agregat ke semua nilai. ALL adalah default.

NYATA

Menentukan yang PRODUCT mengembalikan produk nilai unik.

expression

Konstanta, kolom, atau fungsi, dan kombinasi operator aritmatika, bitwise, dan string apa pun. ekspresi adalah ekspresi dari kategori jenis data numerik atau perkiraan numerik yang tepat, kecuali untuk jenis data bit . Fungsi dan subkueri agregat tidak diizinkan. Untuk informasi selengkapnya, lihat Ekspresi.

OVER ( [ partition_by_clause ] [ order_by_clause ] )

Menentukan pemartisian dan pengurutan set baris sebelum fungsi diterapkan.

partition_by_clause membagi tataan hasil yang dihasilkan oleh FROM klausul menjadi partisi tempat fungsi diterapkan. Jika tidak ditentukan, fungsi memperlakukan semua baris hasil kueri yang ditetapkan sebagai grup tunggal.

order_by_clause menentukan urutan logis tempat operasi dilakukan. Untuk informasi selengkapnya, lihat klausa SELECT - OVER.

Tipe pengembalian

Mengembalikan produk dari semua nilai ekspresi dalam jenis data ekspresi yang paling tepat.

Hasil ekspresi Tipe pengembalian
tinyint int
smallint int
int int
bigint bigint
Kategori Desimal (P, S) Jika s adalah 0, desimal(38, 0), jika tidak , desimal(38, 6)
kategori uang dan smallmoney money
float dan kategori nyata float

Remarks

Dukungan untuk PRODUCT Azure SQL Managed Instance terbatas pada Azure SQL Managed InstanceAUTD.

PRODUCT adalah fungsi deterministik ketika digunakan tanpa OVER klausul dan ORDER BY . Ini nondeterministik ketika ditentukan dengan OVER klausul dan ORDER BY . Untuk informasi selengkapnya, lihat Fungsi deterministik dan nondeterministik.

Examples

Sampel kode dalam artikel ini menggunakan database sampel AdventureWorks2025 atau AdventureWorksDW2025, yang dapat Anda unduh dari halaman beranda Sampel dan Proyek Komunitas Microsoft SQL Server.

A. Mengalikan baris bersama-sama

Contoh berikut menggunakan fungsi ini PRODUCT :

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

Berikut kumpulan hasilnya.

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

B. Menggunakan klausa OVER

Contoh berikut menggunakan PRODUCT fungsi dengan OVER klausa untuk memberikan tingkat pengembalian instrumen keuangan hipotetis. Data dipartisi oleh 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);

Berikut kumpulan hasilnya.

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