Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将另一个表中的列乘以权重,需要在SQL中进行第二次选择和求和_Sql_Sql Server_Tsql - Fatal编程技术网

将另一个表中的列乘以权重,需要在SQL中进行第二次选择和求和

将另一个表中的列乘以权重,需要在SQL中进行第二次选择和求和,sql,sql-server,tsql,Sql,Sql Server,Tsql,我认为这在SQL中是一个非常常见的请求,但根本找不到一个好的“SQL”方法来实现。根据一个查询的结果,我想将一系列返回值乘以另一个表中的权重因子,然后求和总数。我可以在一种语言中通过迭代来实现这一点,但如何直接在SQL中实现这一点呢 因此,查询1的结果可能是: 10, 20, 40, 70, 90 ... 从表1中选择值 表1 VID Value 1 10 2 20 . . 表2 ID Weight VID 1 0.1 1 2 0.01 2

我认为这在SQL中是一个非常常见的请求,但根本找不到一个好的“SQL”方法来实现。根据一个查询的结果,我想将一系列返回值乘以另一个表中的权重因子,然后求和总数。我可以在一种语言中通过迭代来实现这一点,但如何直接在SQL中实现这一点呢

因此,查询1的结果可能是:

10, 20, 40, 70, 90 ...
从表1中选择值

表1

VID   Value
1     10
2     20
.
.
表2

ID   Weight VID
1     0.1    1
2     0.01   2
.
.
重量是

0.1, 0.01, 10, 0.05, 4.0

So the result is 10*0.1 + 20*0.01 + 40*10 + 70*0.05 + 90*4.0 + ..

正确的形式主义是什么?我不介意多个查询,因为这是调试代码,与使用记录集执行此操作的更具编程性/语言性的方法一起使用。

您需要详细说明这些数字是如何相互关联的。您能显示生成结果的代码吗?仅供参考-在SQL Server上执行此操作(如@Jas的回答)可能比在过程代码中更快。这与通过记录集循环,必须先选择所有数据,然后执行过程代码相比尤其如此。当然,如果它是一个非常小的数据集,您可能不会注意到
select sum(t1.value * t2.weight) 
from t1
join t2 on t1.vid = t2.vid