2016-07-13 3 views
0

Я хочу выполнить запущенное умножение с использованием SQL-запроса в базе данных MS-доступа.Запуск умножения в 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 хотите еще один столбец, который обеспечит меня работает умножение. Например, в соответствии с результатом вашего набора данных запроса:

Например, если я умножу Макс (Qty), то есть 5026 по скорости, он даст мне 4931.0086. Теперь я хочу, чтобы умножить 4931.0086 1 (т.е. 2-го значения строки поля скорости) и так 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; 
Смежные вопросы