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

时间:2010-11-05 21:21:17

标签: sql matrix-multiplication

是否存在获得该结果的模式或方法?请在帖子alt text中显示我的图片 我希望我的结果是垂直数字(黑线)乘以数字的乘积 水平(红线)

2 个答案:

答案 0 :(得分:1)

请试试这个:

select cast(exp(sum(log(ExpPeso))) as float) as myresult1, (tda1*tda2*tda3*tda4) as reslutset2  
from TableName

答案 1 :(得分:1)

如果您想通过将编号列提取到表格(例如

)来normalize数据
Matrix
Name  Value
Tda1    94.5
Tda2    21.1
Tda3    53.4
Tda4    21.1

假设原始表名为table,列中的列tda值称为name,而值与命名表达式相乘(抱歉无法读取列名)

然后你可以

SELECT matrix.value * table.expression
FROM matrix m INNER JOIN table t
    ON m.name = t.tda_value

如果你不能改变结构,那么在标准SQL(恕我直言)中,你将不得不做案例

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为NULL(或跳过其他)。
  • 某些数据库具有标准扩展,允许您将动态列设置为行

编辑: 当然,冒着说明太明显的风险,最后你可以对上述查询进行总结。