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, sumylog
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 logfunción:
Se produjo una operación de coma flotante no válida.
Pensé que podría solucionar esto usando una caseexpresió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
