SQL 字段相乘的聚合操作

来源:互联网 发布:软件开发者路线图 pdf 编辑:程序博客网 时间:2024/04/30 08:01

今天收到一个比较怪异的需求,需要查询数据库中某一字段所有数值的相乘结果

 

我的第一反应是做一个CLR的聚合函数,在每次处理的时候做相乘操作即可

 

但是目标的数据库是sql2000,无法使用CLR函数

 

到网上搜索了一下,发现了一个很不错的解决方案。

 

logx+logy=logx*y

 

这个是一个高中生都学过的对数计算,对数的相加等于指数的相乘,我们利用这个方式转换加法到乘法

 

 

实现方式,先对记录取对数log(),然后sum聚合,最后exp,结果就是记录相乘的结果

 

select exp(sum(log(col))) from table where......