Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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_Matrix Multiplication - Fatal编程技术网

在SQL中,我如何将行中获得的结果乘以列中获得的结果

在SQL中,我如何将行中获得的结果乘以列中获得的结果,sql,matrix-multiplication,Sql,Matrix Multiplication,是否存在获得该结果的模式或方法?请把我的形象贴在帖子上 我想我的结果是垂直方向上的数字(黑线)乘以数字的乘积 水平(红线)请尝试以下操作: select cast(exp(sum(log(ExpPeso))) as float) as myresult1, (tda1*tda2*tda3*tda4) as reslutset2 from TableName 如果您希望通过将带编号的列提取到一个表(如 Matrix Name Value Tda1 94.5 Tda2 21.1

是否存在获得该结果的模式或方法?请把我的形象贴在帖子上 我想我的结果是垂直方向上的数字(黑线)乘以数字的乘积 水平(红线)

请尝试以下操作:

select cast(exp(sum(log(ExpPeso))) as float) as myresult1, (tda1*tda2*tda3*tda4) as reslutset2  
from TableName
如果您希望通过将带编号的列提取到一个表(如

Matrix
Name  Value
Tda1    94.5
Tda2    21.1
Tda3    53.4
Tda4    21.1
假设原始表是命名表,列tda值位于名为name的列中,值与命名表达式相乘(抱歉,无法读取列名)

那你就可以

SELECT matrix.value * table.expression
FROM matrix m INNER JOIN table t
    ON m.name = t.tda_value
若您不能更改结构,那个么在标准SQL(IMHO)中,您将不得不执行这种情况

SELECT 
      CASE t.tda_value 
          WHEN "Tda1" THEN Tda1
          WHEN "Tda2" THEN Tda2
          WHEN "Tda3" THEN Tda3
          WHEN "Tda4" THEN Tda4
          ELSE 0
      END * t.expression
FROM table
注:

  • 您可能希望ELSE为空(或跳过ELSE)
  • 有些数据库具有对标准的扩展,允许您将动态列转换为行
编辑:
当然,冒着说得太明显的风险,最后你可以对上面的查询求和。

试着理解一下,你想取66.28乘以84.5、21.1和63.4?您可以根据图像中的数据给出一个示例结果吗?名为Foo1、Foo2、Foo3等的列通常表示设计不好。66.28x84.5、58.76x21.1…按此顺序尝试将可读字段名和表名规范化(按照@Unreason),然后注意
log(a*b*c...*n)=log(a)+log(b)+log(c)…+log(n)
(根据@Mazhar Karimi)。