Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy do: SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Warehouse in Microsoft Fabric
SQL database in Microsoft Fabric
Funkcja PRODUCT zwraca iloczyn wszystkich wartości lub tylko DISTINCT wartości w wyrażeniu. Używaj tylko z kolumnami liczbowymi. Wartości null są ignorowane.
Transact-SQL konwencje składni
Syntax
Składnia funkcji agregacyjnych:
PRODUCT ( [ ALL | DISTINCT ] expression )
Składnia funkcji analitycznej:
PRODUCT ( [ ALL ] expression) OVER ( [ partition_by_clause ] [ order_by_clause ] )
Arguments
ALL
Stosuje funkcję agregacji do wszystkich wartości.
ALL jest wartością domyślną.
ODMIENNY
Określa, że zwraca PRODUCT iloczyn unikalnych wartości.
expression
Stała, kolumna lub funkcja oraz dowolna kombinacja operatorów arytmetycznych, bitowych i ciągów. wyrażenie jest wyrażeniem dokładnej kategorii typu danych liczbowych lub przybliżonych liczbowych, z wyjątkiem typu danych bitowych . Funkcje agregujące i podzapytania nie są dozwolone. Aby uzyskać więcej informacji, zobacz Expressions.
KONIEC ( [ partition_by_clause ] [ order_by_clause ] )
Określa partycjonowanie i kolejność zestawu wierszy przed zastosowaniem funkcji.
partition_by_clause dzieli zestaw wyników generowany przez klauzulę FROM na partycje, do których jest stosowana funkcja. Jeśli nie zostanie określony, funkcja traktuje wszystkie wiersze zestawu wyników zapytania jako pojedynczą grupę.
order_by_clause określa kolejność logiczną, w której jest wykonywana operacja. Aby uzyskać więcej informacji, zobacz SELECT — OVER, klauzula.
Typy zwracane
Zwraca iloczyn wszystkich wartości wyrażeń w najbardziej precyzyjnym typie danych wyrażenia .
| Wynik wyrażenia | Typ zwracany |
|---|---|
| tinyint | int |
| smallint | int |
| int | int |
| bigint | bigint |
| Kategoria dziesiętna (P, S) | Jeśli s jest , 0dziesiętnym(38, 0), w przeciwnym razie dziesiętnym(38, 6) |
| Kategoria pieniędzy i drobnych pieniędzy | money |
| kategoria zmiennoprzecinkowa i rzeczywista | float |
Remarks
Wsparcie dla PRODUCT in Azure SQL Managed Instance jest ograniczone do Azure SQL Managed InstanceAUTD.
PRODUCT jest funkcją deterministyczną, gdy jest używana bez OVER klauzul i ORDER BY . Jest to niedeterministyczne, gdy jest określony z klauzulami OVER i ORDER BY . Aby uzyskać więcej informacji, zobacz funkcje deterministyczne i niedeterministyczne.
Examples
Przykłady kodu w tym artykule korzystają z przykładowej bazy danych AdventureWorks2025 lub AdventureWorksDW2025, którą można pobrać ze strony głównej Przykładów programu Microsoft SQL Server i projektów społeczności.
A. Mnożenie wierszy razem
Poniższy przykład wykorzystuje funkcję PRODUCT :
SELECT PRODUCT(UnitPrice) AS ProductOfPrices
FROM Purchasing.PurchaseOrderDetail
WHERE ModifiedDate <= '2023-05-24'
GROUP BY ProductId;
Oto zestaw wyników.
ProductOfPrices
----------
2526.2435
41.916
3251.9077
640559.8491
1469352.0378
222137708.073
11432159376.271
5898056028.2633
14030141.2883
2526.4194
B. Używanie klauzuli OVER
Poniższy przykład wykorzystuje PRODUCT funkcję z klauzulą OVER do określenia stopy zwrotu z hipotetycznych instrumentów finansowych. Dane są partycjonowane według .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);
Oto zestaw wyników.
finInstrument CompoundedReturn
------------- ---------------------------------------
instrumentA 1.163527
instrumentA 1.163527
instrumentA 1.163527
instrumentB 1.048300
instrumentC 1.268900
Treści powiązane
- funkcje agregujące (Transact-SQL)
- SELECT — klauzula OVER (Transact-SQL)