2015-04-19 3 views
1

У меня есть таблица для материального потребления, тот же продукт с различной стоимостью и инвентарем в соответствии с сильфономавтоматический баланс или суммированием

itcode cost stock 
100  10 100 
100  11 110 
100  12 500 
100  13 200 

Если я потреблять количество 300, мне нужно, чтобы получить результат следующим

itcode cost stock auto-deduct balance_of_stock 
100  10  100 100    0 
100  11  110 110    0 
100  12  500 90    410  

величина должна автоматически вычитать из начала

+0

Вы имеете в виду автовычисление, а balance_of_stock - столбцы в таблице или столбцы только для результатов? (I.e. если эти значения будут сохранены или только что возвращены?) – jarlh

+0

просто в результате/вид – user3800618

+0

Что вы пробовали? Покажите нам свой текущий запрос и опишите, что не так с его результатом. – jarlh

ответ

0

я использовал производную таблицу для расчета накопленного запаса (rsum). CASE при вычислении auto_deduct и balance_of_stock.

select itcode, 
     cost, 
     stock, 
     case when rsum - 300 > 0 then stock + 300 - rsum 
      else stock end as auto_deduct, 
     case when rsum < 300 then 0 
      else rsum - 300 end balance_of_stock 
from 
(select b1.*, 
     (select sum(stock) from b b3 
     where b3.itcode = b1.itcode 
      and b3.cost <= b1.cost) as rsum 
from b b1 
where (select sum(stock) from b b2 
     where b2.itcode = b1.itcode 
      and b2.cost >= b1.cost) >= 300) 
Смежные вопросы