Estoy tratando de obtener el Producto de todas las filas para una columna específica en una consulta agrupada por. La mayoría de los ejemplos que he encontrado me apuntan a combinar exp
, sum
ylog
exp(sum(log([Column A])))
El problema que tengo es que la columna contiene algunos ceros para los valores y, por lo tanto, obtengo este error cuando se pasan los ceros a la log
función:
Se produjo una operación de coma flotante no válida.
Pensé que podría solucionar esto usando una case
expresión, pero eso simplemente no funciona de la manera que creo que debería, ya que parece evaluar todos los 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 el siguiente conjunto de resultados:
Id Name Value
_________________________________
1 a 1
2 a 2
3 b 0
4 b 1
Esperaría obtener las siguientes filas:
Name Product
_____________
a 2
b 0
En resumen ... ¿Cómo se multiplican las filas en una columna que puede contener números con valor negativo o cero?
fuente