Usiłuję uzyskać iloczyn wszystkich wierszy dla określonej kolumny w grupie pogrupowanej według zapytania. Większość przykładów mam punkt znalazł mnie w kierunku łączenia exp
, sum
ilog
exp(sum(log([Column A])))
Problem, który mam, polega na tym, że kolumna zawiera niektóre zera wartości, dlatego otrzymuję ten błąd, gdy zera są przekazywane do log
funkcji:
Wystąpiła niepoprawna operacja zmiennoprzecinkowa.
Myślałem, że mogę to obejść za pomocą case
wyrażenia, ale to po prostu nie działa tak, jak myślałem, że powinno, ponieważ wydaje się, że ocenia wszystkie przypadki ...
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
Biorąc pod uwagę następujący zestaw wyników:
Id Name Value
_________________________________
1 a 1
2 a 2
3 b 0
4 b 1
Spodziewałbym się uzyskać następujące wiersze:
Name Product
_____________
a 2
b 0
Podsumowując ... Jak pomnożyć wiersze w kolumnie, która może zawierać liczby ujemne lub wartości zerowe?
źródło