我有下表
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/