Сложный выбор запроса для инвентаря

У меня есть мой код:

SELECT m.`genmat_id`,m.`mat_type`,m.`mat_name`, m.`category`, m.`size`, m.`req_qty`, m.`stock_received`, m.`stock_released`, m.`release_approval`, (select sum(stock_received) - sum(stock_released) from genmaterial m2 where m2.mat_name = m.mat_name and m2.genmat_id <= m.genmat_id ) as Stock_balance, (case when (select sum(stock_received) from genmaterial m2 where m2.mat_name = m.mat_name and m2.genmat_id <= m.genmat_id ) = req_qty then 'Complete' when req_qty = 0 then '' else 'Incomplete' end) as status, m.`date`, s.`sup_name` FROM `genmaterial` m LEFT JOIN `supplier` s on s.sup_id = m.sup_id ORDER BY m.`genmat_id` ASC 

OUTPUT (игнорируйте столбец «Полные тексты»):

 Full Texts genmat_id mat_type mat_name category size req_qty stock_received stock_released release_approval Stock_balance status date sup_name Edit Delete 69 pur aluminum flat bar metal 100 m 130 0 0 0 Incomplete 2014-02-14 E-store Edit Delete 70 Raw aluminum flat bar metal 100 m 130 50 0 50 Incomplete 2014-02-15 E-store Edit Delete 71 Raw aluminum flat bar metal 100 m 130 80 0 130 Complete 2014-02-20 E-store Edit Delete 72 pur mild steel metal 100 m 50 0 0 0 Incomplete 2014-02-13 Handy Shop Edit Delete 73 Raw mild steel metal 100 m 50 50 0 50 Complete 2014-02-15 Handy Shop Edit Delete 74 pur mild steel metal 100 m 40 0 0 50 Incomplete 2014-02-14 E-store Edit Delete 77 Raw mild steel metal 100 m 40 40 0 90 Incomplete 2014-02-17 E-store 

Mat_id 74 – это новый запрос, идентифицированный mat_type = pur и mat_id 77 – это получение запроса с 40 на stock_received и mat_type = Raw . Теперь, share_balance является настолько правильным, потому что он суммирует предыдущее общее количество material + the stock_received .

Мой вопрос: как я могу сделать статус полным с этим условием?

он подведет итог stock_received, когда mat_type=raw внутри счетчика, и если counter=req_qty будет иметь status=complete Мой существующий код генерирует статус, когда Stock_balance = req_qty . Как я могу сделать это counter = req_qty а share_balance – от суммы счетчика каждый mat_name и share_balance – stock_released (stock_out)

(см. столбец счетчика): счетчик будет подсчитывать только значение запаса за каждый новый mat_type = pur

 Full Texts genmat_id mat_type mat_name category size req_qty stock_received counter stock_released release_approval Stock_balance status date sup_name Edit Delete 69 pur aluminum flat bar metal 100 m 130 0 0 0 0 Incomplete 2014-02-14 E-store Edit Delete 70 Raw aluminum flat bar metal 100 m 130 50 50 0 50 Incomplete 2014-02-15 E-store Edit Delete 71 Raw aluminum flat bar metal 100 m 130 80 130 0 130 Complete 2014-02-20 E-store Edit Delete 72 pur mild steel metal 100 m 50 0 0 0 0 Incomplete 2014-02-13 Handy Shop Edit Delete 73 Raw mild steel metal 100 m 50 50 50 0 50 Complete 2014-02-15 Handy Shop Edit Delete 74 pur mild steel metal 100 m 40 0 0 0 50 Incomplete 2014-02-14 E-store Edit Delete 77 Raw mild steel metal 100 m 40 40 40 0 90 Incomplete 2014-02-17 E-store