BODS中的上一行值

2020-09-01 22:39发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,

我正面临一个场景,其中当行号不等于1时,我需要在"数量"列中覆盖该值。

公式将为:如果行号不等于1,则数量-数量。数量将为前一行的值。我使用了前一行的值函数,但没有运气。请帮助我。

ifthenelse(Query_2.ROW_NO = 1,Query_2.Quantity,previous_row_value(Query_2.Quantity)-Query_2.MENGE)

预期的回答是147-10,即137。

(12.1 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,

我正面临一个场景,其中当行号不等于1时,我需要在"数量"列中覆盖该值。

公式将为:如果行号不等于1,则数量-数量。数量将为前一行的值。我使用了前一行的值函数,但没有运气。请帮助我。

ifthenelse(Query_2.ROW_NO = 1,Query_2.Quantity,previous_row_value(Query_2.Quantity)-Query_2.MENGE)

预期的回答是147-10,即137。

(12.1 kB)
付费偷看设置
发送
8条回答
ZJXianG
1楼 · 2020-09-01 23:02.采纳回答

好的。 让我们将问题分为两部分。

1)您是否同意,如果工作表中还有另一列称为cumulative_sum的列,即所有先前MENGE值加上当前值的总和,那么问题会很简单吗? p>

注意:

G2 = E2
G3 = E2 + E3

G4 = E4
G5 = E4 + E5

G6 = E6
G7 = E6 + E7
G8 = E6 + E7 + E8
G9 = E6 + E7 + E8 + E9

然后,QUANTITY就是LBKUM-CUMULATIVE_SUM(MENGE)。 由于ROW_NO = 1的CUMULATIVE_SUM(MENGE)是MENGE本身,因此不再需要ifthenelse,因此将其隐式应用。

2)如何创建cumulative_sum?

这 我已经在这里(和子页面)记录了一些时间。 您可以从中间开始阅读,因为前半部分只是推理以及如何创建ROW_NO列。

https://wiki.scn.sap.com/wiki/display/EIM/Cumulative+Sum

您的Query_cartesian_product中的where子句将是

 Query_previous.MATNR = Query_current.MATNR和
 Query_previous.WERK = Query_current.WERK和
 Query_previous.LBKUM = Query_current.LBKUM和
 Query_previous.ROW_NO <= Query_current.ROW_NO 

更好吗?

PS:它不是使用Row_Gen创建笛卡尔乘积,而是使用自连接,从而为您提供相同的结果 而且效率更高。 抱歉,建议Row_Gen时忘记了该选项。

Baoming ROSE
2楼-- · 2020-09-01 22:44

是的,我无法实施Werner。请您详细说明一下吗?

一周热门 更多>