在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 &lt;= 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查询和查看中计算运行余额的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 运行总计算列消息

为啥 MySQL View 和同一个 View 的底层 SELECT 查询返回不同的结果?

select语句中的mysql计算

mysql怎么将两个表查询出来的结果再去关联下一张表?

如何在mysql中查询所有表是不是包含某个字段

如何在 wordpress 中运行 mysql 查询?