在mysql中计算运行余额选择查询和查看

在mysql中计算运行余额选择查询和查看,mysql,sql,select,view,Mysql,Sql,Select,View,我的名为material的简单表格包含以下列: mat_id mat_name stock_in stock_released date 1 alloy 30 0 feb13 2 steel 15 0 feb13 3 alloy

我的名为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

它如何从中创建视图

使用此数据,获取流动余额的查询是:

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;

这可以放在视图中。

在MySQL中不能。它在from子句中既有变量又有子查询。回到上一个问题,看看我的答案。这可以放在一个视图中。当我的物料列中有我的供应商id,并且必须与供应商表中的同一供应商id匹配并显示供应商名称sir时,怎么样?然后您将在子查询中添加另一个条件,m2.supplier\u name=m.supplier\u name。是这样吗,先生?选择m.mat_id、m.mat_名称、s.sup_名称、m.stock_in、m.stock_released,选择sumstock_in-材料m2释放的sumstock_,供应商s2,其中m2.mat_名称=m.mat_名称和m2.mat_id