Sql 报告中的累计金额

Sql 报告中的累计金额,sql,Sql,大家好, 我正在编写一份报告,其中我正在进行计算: 让我们以第一行为例。在前面剩下的列中,我们有15个,在take列中,我们有0.5个,所以在剩下的列中,我们有14.5个 现在的问题是在剩余字段中使用结果,并将其转移到前一列剩余字段的下一行。因此,我们应该是14.5,而不是14 有没有人做过类似的事情并指导我如何做?我真的很想学习如何解决这样的问题。ANSI标准lag()函数正是您想要的。SQL表表示无序的集合,所以我需要假设您有一些列——我将称之为id——用于标识行的顺序 lag()的语法是:

大家好,

我正在编写一份报告,其中我正在进行计算:

让我们以第一行为例。在前面剩下的列中,我们有15个,在take列中,我们有0.5个,所以在剩下的列中,我们有14.5个

现在的问题是在剩余字段中使用结果,并将其转移到前一列剩余字段的下一行。因此,我们应该是14.5,而不是14


有没有人做过类似的事情并指导我如何做?我真的很想学习如何解决这样的问题。

ANSI标准
lag()
函数正是您想要的。SQL表表示无序的集合,所以我需要假设您有一些列——我将称之为
id
——用于标识行的顺序

lag()
的语法是:

select t.*, lag(Remaining) over (order by 1) as prevRemaining
from table t;

如果数据库不支持ANSI标准窗口函数,则可以通过子查询获得相同的效果。但是,不同数据库的语法可能略有不同。

您应该先阅读有关数据库规范化的内容。这是一个糟糕的数据库设计。这些是不同表中的值的结果。所附的屏幕截图只是一个带有我定义的列名的示例报告。“有人做过类似的工作吗?”是的。“并指导我如何处理这个问题?”不要在SQL中执行,而是在应用程序层或报告层执行。SQL不是设计用来进行“运行总计”(或任何其他依赖于结果其他行中数据的操作)的。请用您正在使用的数据库标记您的问题。