Ich versuche, das Produkt aller Zeilen für eine bestimmte Spalte in einer nach Abfrage gruppierten zu erhalten. Die meisten Beispiele, die ich gefunden habe, weisen mich auf das Kombinieren hin exp
, sum
undlog
exp(sum(log([Column A])))
Das Problem, das ich habe, ist, dass die Spalte einige Nullen für Werte enthält und daher dieser Fehler angezeigt wird, wenn Nullen an die log
Funktion übergeben werden:
Eine ungültige Gleitkommaoperation ist aufgetreten.
Ich dachte, ich könnte dies mit einem case
Ausdruck umgehen, aber das funktioniert einfach nicht so, wie ich es mir vorstellen würde, da es alle Fälle zu bewerten scheint ...
select
Name,
Product = case
when min([Value]) = 0 then 0
when min([Value]) <> 0 then exp(sum(log(I))) -- trying to get the product of all rows in this column
end
from ids
group by Name
Angesichts der folgenden Ergebnismenge:
Id Name Value
_________________________________
1 a 1
2 a 2
3 b 0
4 b 1
Ich würde erwarten, die folgenden Zeilen zu erhalten:
Name Product
_____________
a 2
b 0
Also zusammenfassend ... Wie multiplizieren Sie Zeilen in einer Spalte, die negative oder nullwertige Zahlen enthalten können?
quelle