sql - t-sql 中的行相乘

标签 sql sql-server sql-server-2008 tsql

我有下表

 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/

相关文章:

SQL 全文搜索与 "LIKE"

sql - 使用 CONNECT BY 通过 Oracle 中的 SQL 查询获取 Hierarchy 中的所有父级和一个子级

java - 使用 jdbcTemplate 进行分页

sql-server - Sqlcmd:错误:Microsoft SQL Server Native Client 10.0:发生与网络相关或特定于实例的错误

performance - 向 SQL Server 2008 数据库添加非强制外键是否会影响性能?

SQL - OR 条件的顺序重要吗?

sql - 如何为所有表选择表名称、行数和 CHECKSUM_AGG?

sql - 仅选择包含值的列

sql - SQL Server :An expression of non-boolean type specified in a context where a condition is expected

sql-server - 使用sql server跨陆地两点之间的距离