Я пытаюсь получить продукт всех строк для определенного столбца в группе по запросу. Большинство примеров, которые я нашел, указывают мне на объединение exp
, sum
иlog
exp(sum(log([Column A])))
У меня проблема в том, что столбец содержит несколько нулей для значений, и поэтому я получаю эту ошибку, когда нули передаются в log
функцию:
Произошла недопустимая операция с плавающей запятой.
Я думал, что смогу обойти это, используя case
выражение, но это просто не работает так, как я думаю, как должно, как кажется, оценивает все случаи ...
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
Учитывая следующий набор результатов:
Id Name Value
_________________________________
1 a 1
2 a 2
3 b 0
4 b 1
Я ожидаю получить следующие строки:
Name Product
_____________
a 2
b 0
Итак, в заключение ... Как вы умножаете строки в столбце, который может содержать отрицательные или нулевые числа?
источник