在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)。