在mysql select查询和查看中计算运行余额
Posted
技术标签:
【中文标题】在mysql select查询和查看中计算运行余额【英文标题】:Calculate running balance in mysql select query and view 【发布时间】:2014-02-12 22:51:59 【问题描述】:我的简单表名为 material 与这些列:
mat_id mat_name stock_in stock_released date
1 alloy 30 0 feb13
2 steel 15 0 feb13
3 alloy 0 3 feb14
如何生成或计算为:
mat_id mat_name stock_in stock_released Balance date
1 alloy 30 0 30 feb13
2 steel 15 0 15 feb13
3 alloy 0 3 15 feb14
这是我现有的代码,但天平有问题,因为它汇总了所有内容而忽略了材料名称:
SELECT
`material`.`mat_id`,
`material`.`mat_name`,
`material`.`stock_in`,
`material`.`stock_released`,
@Balance := @Balance + `material`.`stock_in` - `material`.`stock_released` AS `Balance`,
`material`.`date`
FROM `material`, (SELECT @Balance := 0) AS variableInit
WHERE mat_name = mat_name
ORDER BY `material`.`mat_id` ASC
它如何从中创建视图?
【问题讨论】:
你不能在 mysql 中。它在from
子句中有变量和子查询。回到你之前的问题,看看我的回答。这可以放入视图中。
【参考方案1】:
有了这个数据,得到运行余额的查询是:
SELECT m.`mat_id`, m.`mat_name`, m.`stock_in`, m.`stock_released`,
(select sum(stock_in) - sum(stock_released)
from material m2
where m2.mat_name = m.mat_name and
m2.mat_id <= m.mat_id
) as balance,
m.`date`
FROM `material` m
ORDER BY m.`mat_id` ASC;
您可以将其放入视图中。
【讨论】:
当我的材料列中有我的供应商ID并且必须与供应商表中的相同供应商ID匹配并显示供应商名称先生时怎么样? 然后您将在子查询中添加另一个条件m2.supplier_name = m.supplier_name
。
这是对的吗先生? SELECT m.
mat_id, m.
mat_name, s.
sup_name, m.
stock_in, m.
stock_released, (select sum(stock_in) - sum(stock_released) from material m2, supplier s2 where m2.mat_name = m.mat_name and m2.mat_id <= m.mat_id m2.supplier = s2.sup_id ) as balance, m.
date` FROM material
m, supplier
s, ORDER BY m.`span>4.@98765
以上是关于在mysql select查询和查看中计算运行余额的主要内容,如果未能解决你的问题,请参考以下文章