我有下表
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),
(2, 10)
SELECT Id, EXP(SUM(LOG(ABS(Number)))) as Result
FROM @data GROUP BY id
输出:
1 22
2 55
关于sql - 在T-SQL中乘行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8185873/