从当前行和上一行计算 2 列

Posted

技术标签:

【中文标题】从当前行和上一行计算 2 列【英文标题】:Compute 2 Columns from current row and from the row above 【发布时间】:2020-06-30 09:01:04 【问题描述】:

我有一张像这样的表

我的目标是看起来像这样

基本上,它所做的就是根据期初余额的库存和库存一直向下求和,但我无法实现。如何显示这个?

我希望我的表格能在不影响期初余额行的情况下显示余额

【问题讨论】:

1) 无排序 - 无结果。请记住 - 输出中的物理排序不适用。 2) 当您定义行排序时 - 使用 LAG() 函数。 我有一个主 ID AI,我只是没有在我的示例中添加它 如果是,请使用LAG() 【参考方案1】:

您可以使用窗口函数(如果您运行的是 mysql 8.0)。假设列 id 定义了行的顺序,那就是:

select
    t.*,
    sum(coalesce(balance, 0) + coalesce(stock_in, 0) - coalesce(stock_out, 0))
        over(partition by branch_id order by id) new_balance
from mytable t

【讨论】:

如果我有 2 个分支 ID,它会影响我的报告吗? @PaulEdwardPagente:总和由branch_id 划分,因此无论您有多少branch_ids,这都会起作用。 回答这个问题

以上是关于从当前行和上一行计算 2 列的主要内容,如果未能解决你的问题,请参考以下文章

基于当前行和上一行的用户定义函数

当前行和上一行之间具有特定值的窗口函数

在oracle sql中比较当前行和上一行

当前行和上一行之间的秒数差异,并使用 google bigquery 将值存储在单独的列中

当前行和上一行之间的秒数差异,并在订单 ID 也使用 google bigquery 匹配时将值存储在单独的列中

如何计算当前行与下一行?