Estou tentando obter o produto de todas as linhas para uma coluna específica em um agrupado por consulta. A maioria dos exemplos que eu encontrei ponto mim para combinar exp
, sum
elog
exp(sum(log([Column A])))
O problema que estou tendo é que a coluna contém alguns zeros para valores e, portanto, estou recebendo esse erro quando zeros são passados para a log
função:
Ocorreu uma operação inválida de ponto flutuante.
Eu pensei que poderia contornar isso usando uma case
expressão, mas isso simplesmente não funciona da maneira que eu acho que deveria, pois parece avaliar todos os casos ...
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
Dado o seguinte conjunto de resultados:
Id Name Value
_________________________________
1 a 1
2 a 2
3 b 0
4 b 1
Eu esperaria obter as seguintes linhas:
Name Product
_____________
a 2
b 0
Então, em resumo ... Como você multiplica linhas em uma coluna que pode conter números negativos ou com valor zero?
fonte