J'essaie d'obtenir le produit de toutes les lignes pour une colonne spécifique dans une requête groupée. La plupart des exemples que j'ai trouvés m'indiquent vers la combinaison exp
, sum
etlog
exp(sum(log([Column A])))
Le problème que j'ai est que la colonne contient des zéros pour les valeurs et donc j'obtiens cette erreur lorsque des zéros sont passés à la log
fonction:
Une opération à virgule flottante non valide s'est produite.
J'ai pensé que je pouvais contourner cela en utilisant une case
expression, mais cela ne fonctionne tout simplement pas comme je le pense, car il semble évaluer tous les cas ...
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
Étant donné l'ensemble de résultats suivant:
Id Name Value
_________________________________
1 a 1
2 a 2
3 b 0
4 b 1
Je m'attendrais à obtenir les lignes suivantes:
Name Product
_____________
a 2
b 0
Donc en résumé ... Comment multipliez-vous les lignes d'une colonne qui peuvent contenir des nombres négatifs ou nuls?
la source