Sto cercando di ottenere il prodotto di tutte le righe per una colonna specifica in un raggruppato per query. La maggior parte degli esempi che ho trovato punto di me verso la combinazione exp
, sum
elog
exp(sum(log([Column A])))
Il problema che sto riscontrando è che la colonna contiene alcuni zeri per i valori e quindi visualizzo questo errore quando gli zeri vengono passati alla log
funzione:
Si è verificata un'operazione in virgola mobile non valida.
Pensavo di poter aggirare questo problema usando case
un'espressione, ma non funziona come penserei che dovrebbe, visto che sembra valutare tutti i casi ...
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
Dato il seguente set di risultati:
Id Name Value
_________________________________
1 a 1
2 a 2
3 b 0
4 b 1
Mi aspetterei di ottenere le seguenti righe:
Name Product
_____________
a 2
b 0
Quindi in sintesi ... Come si moltiplicano le righe in una colonna che possono contenere numeri negativi o con valore zero?