2010-11-05 43 views
0

中获得的结果存在获取结果的模式或方法?请好像我的形象在后alt text 我想我的结果是乘以数量 水平(红线)号的垂直(黑线)产品在SQL中,我如何可以将行中获得的结果乘以列

+0

只是想明白,你想采取66.28和多倍84.5和21.1和63.4?你可以根据图像中的数据给出一个样本结果吗? – NotMe 2010-11-05 21:24:51

+0

列Foo1,Foo2,Foo3等通常​​表示设计不好。 – 2010-11-05 21:25:32

+0

66.28x84.5,58.76x21.1 ....按此顺序 – elgianka 2010-11-05 21:29:06

回答

1

请试试这个:

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

如果您将被列名为名称和值提取偶数列到这样一个表作为

Matrix 
Name Value 
Tda1 94.5 
Tda2 21.1 
Tda3 53.4 
Tda4 21.1 

并假设原始表被命名为表,以列TDA值normalize数据与命名表达式乘以(抱歉无法读取列名)

然后,你可以

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(或跳过其他)。
  • 一些数据库具有扩展标准,将让你有动态列行

编辑: 当然,在说明太过明显的危险性,在年底,你可以做上面的SUM查询。

相关问题