2016-07-13 84 views
0

我想在MS访问数据库中使用SQL查询执行运算乘法运算。在SQL中运行乘法运算

SELECT Table.ITEM 
,Table.Location 
,Table.PATH 
,Table.PARENT 
,Table.CATEGORY 
,Table.origin 
,Table.qty 
,Table.rate 
,(Produced * Rate) AS EFF_Rate 
,(
    SELECT max(QTY) AS ProducedQty 
    FROM TableAS B 
    GROUP BY ITEM 
    ) AS Produced 
    FROM Table; 

我(查询Result.jpeg)enter image description here 想多一个列,将提供我跑乘法获得此为样本输出。例如,根据您的查询数据集的结果:

例如,如果我乘以最大(数量),即5026的速度它会给我4931.0086。现在我想乘4931.0086与1(速度场的即第二行值)等on.attached期望输出Output

回答

0

我装箱一个测试表,它的工作原理:

SELECT rate,eff_rate, 
     (
     case @RunMult when 0 then @RunMult := eff_rate 
     else @RunMult := @RunMult * rate end 
     ) as RunningMultipl 
    FROM rate, 
     (SELECT @RunMult:=0) t; 

结果:

+--------+-----------+----------------+ 
    | rate | eff_rate | RunningMultipl | 
    +--------+-----------+----------------+ 
    | 0.9811 | 4931.0086 |  4931.0086 | 
    |  1 |  5026 |  4931.0086 | 
    | 0.9278 | 4663.1228 | 4574.98977908 | 
    +--------+-----------+----------------+ 

工作,因为预计在查询中,它需要一些改变:

SELECT t1.*, 
     (
     case @RunMult when 0 then @RunMult := t1.eff_rate 
     else @RunMult := @RunMult * t1.rate end 
     ) as RunningMultipl 
    FROM 
    (
     SELECT Table.ITEM 
     ,Table.Location 
     ,Table.PATH 
     ,Table.PARENT 
     ,Table.CATEGORY 
     ,Table.origin 
     ,Table.qty 
     ,Table.rate 
     ,(Produced * Rate) AS EFF_Rate 
     ,(
      SELECT max(QTY) AS ProducedQty 
      FROM TableAS B 
      GROUP BY ITEM 
      ) AS Produced 
      FROM Table 
     )as t1, 
     (SELECT @RunMult:=0) t2;