累积性和在报告
问题描述:
您好所有,
我的工作,我正在做计算的报告:
让我们第一线为例。在剩余的前一列中,我们有15个,在所取的列中我们有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标准窗口功能的数据库,你可以用一个子查询同样的效果。但是,数据库之间的语法可能略有不同。
您应该首先阅读关于数据库规范化的内容。这是一个糟糕的数据库设计。 – gdoron 2014-10-06 19:29:56
这些是各种表中值的结果。附加的屏幕截图只是一个带有我定义的列名的示例报告。 – user2122925 2014-10-06 19:31:38
“有没有人在类似的工作”是的。 “并指导我如何处理这个问题?”不要在SQL中执行 - 在应用程序层或报告层执行。 SQL不是设计用于执行“运行总计”(或其他任何依赖结果其他行中的数据的操作)。 – 2014-10-06 19:32:22