我有下表
ID Number ---------------- 1 41.5 2 42.5 3 43.5 2 44.5 2 45.5 1 46.5 1 47.5
我需要编写一个查询,它将返回不同的ID和相应的Number列值相乘.对于给定的表格结果应该是这样的
ID Result ----------------- 1 41.5 * 46.5 * 47.5 2 42.5 * 44.5 * 45.5 3 etc...
(不使用光标)
解决方法
SELECT Id,EXP(SUM(LOG(Number))) as Result FROM scores GROUP BY id
这将适用于正数,乘以负数也可以使用ABS()函数使用绝对(正)值,但最终结果将为正而不是负数:
SELECT Id,EXP(SUM(LOG(ABS(Number)))) as Result FROM scores GROUP BY id
编辑:添加测试脚本
DECLARE @data TABLE(id int,number float) INSERT INTO @data VALUES (1,2.2),(1,10),(2,-5.5),10) SELECT Id,EXP(SUM(LOG(ABS(Number)))) as Result FROM @data GROUP BY id
输出:
1 22 2 55