[英]Calculate running balance in mysql with view
我的簡單表ass_material包含以下各列:
mat_id mat_name supplier request stock_received date
1 alloy test 30 0 feb13
2 alloy test 30 10 feb14
3 alloy test 30 20 feb14
我如何生成它或將其計算為:當stock_balance和request匹配時,它還將生成“完成”狀態。
mat_id mat_name supplier request stock_received Stock_balance date status
1 alloy test 30 0 0 feb13
2 alloy test 30 10 10 feb14
3 alloy test 30 20 30 feb14 complete
這是從其他角度來看的參考代碼:如何將其調整為上面所需的輸出?
SELECT m.`mat_id`, m.`mat_name`, m.`request`, m.`stock_receieved`,
(select sum(stock_received) - sum(stock_received)
from material m2
where m2.mat_name = m.mat_name and
m2.mat_id <= m.mat_id
) as Stock_balance,
m.`date`,
s.`sup_name`
FROM `material` m
LEFT JOIN `supplier` s on s.sup_id = m.supplier_id
ORDER BY m.`mat_id` ASC;
如果stock_balance
是簡單相加stock_received
,然后使用子查詢:
SELECT m.`mat_id`, m.`mat_name`, m.`request`, m.`stock_receieved`,
(select sum(stock_received)
from material m2
where m2.mat_name = m.mat_name and
m2.mat_id <= m.mat_id
) as Stock_balance,
(case when (select sum(stock_received)
from material m2
where m2.mat_name = m.mat_name and
m2.mat_id <= m.mat_id
) = request
then 'Complete'
else 'Incomplete'
end) as status,
m.`date`,
s.`sup_name`
FROM `material` m LEFT JOIN
`supplier` s
on s.sup_id = m.supplier_id
ORDER BY m.`mat_id` ASC;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.