小编blu*_*oft的帖子

如何将包含负值和零值的列的行相乘?

我正在尝试获取按查询分组的特定列的所有行的产品。我发现的大多数例子都指向组合exp,sumlog

exp(sum(log([Column A])))
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是该列包含一些值的零,因此当零传递给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
Run Code Online (Sandbox Code Playgroud)

SqlFiddle

给定以下结果集:

Id  Name  Value
_________________________________
1   a     1
2   a     2
3   b     0
4   b     1
Run Code Online (Sandbox Code Playgroud)

我希望得到以下行:

Name  Product
_____________
a     2
b     0
Run Code Online (Sandbox Code Playgroud)

所以总而言之......你如何乘以可以包含负数或零值的列中的行?

sql-server case sql-server-2014

10
推荐指数
1
解决办法
6234
查看次数

标签 统计

case ×1

sql-server ×1

sql-server-2014 ×1