HANA SQL用户变量还是循环或窗口函数?

2020-09-08 18:07发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好, 我有一个具有以下值...

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

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


你好,

我有一个具有以下值的表:

日期值
 6/3/2019 -50
 6/25/2019 20
 7/28/2019 -41
 8/6/2019 -41
 8/18/2019 -27
 2019年10月18日90
 2019年10月19日90
 11/2/2019 -16
 11/2/2019 61
 11/20/2019 -30
 2019年11月28日95
 12/30/2019 -18
 2020年1月1日76
 2020年2月1日14
 2020年2月9日36
 2020年2月21日48
 3/4/2020 -38
 2020年4月18日41
 5/14/2020 46
 2020年5月26日62
 5/27/2020 -22
 6/8/2020 61
 2020年8月30日77
 2020年10月7日59
 2020年11月15日51
 2020年12月19日18
 2021年1月12日26
 1/24/2021 82
 2/18/2021 10
 20/11/3 -37
 4/5/2021 -17
 6/16/2021 85
 

我想在此表上执行SELECT,并在"值"字段上进行计算。 如果您将上述数据剪切粘贴到Excel中,则第三列的公式为:

= IF(OR(AND(AND(B2> 0,C1 <0),AND(B2 <0,C1 <0)),B2 + C1,B2)

这个公式是总的,但不是一个真正的公式。 B2 + C1是运行总计的实际等值。 只要达到条件,我的运行总计就会根据上一次计算中的值进行重置。 我尝试使用一些SAP提供的窗口函数,但是这些函数不允许将上一行的计算列用于其他计算。 我能找到的最接近的匹配是重用变量,但HANA尚不支持此功能。 由于我的计算是递归的,因此我使用循环来实现此目的,但是它很慢。 我试图看看是否有更好的方法来计算此值而没有循环?

我想要的最终结果是:

日期值CalcFld
 6/3/2019 -50 -50
 6/15/2019 25 -25
 6/25/2019 20 -5
 7/28/2019 -41 -46
 8/6/2019 -41 -87
 8/18/2019 -27 -114
 10/18/2019 90 -24
 10/19/2019 90 66
 11/2/2019 -16 -16
 11/2/2019 61 45
 11/20/2019 -30 -30
 2019年11月28日95 65
 12/30/2019 -18 -18
 2020年1月1日76 58
 2020/2/1 14 14
 2020年2月9日36 36
 2020年2月21日48 48
 3/4/2020 -38 -38
 2020年4月18日41 3
 5/14/2020 46 46
 2020年5月26日62 62
 5/27/2020 -22 -22
 6/8/2020 61 39
 2020年8月30日77 77
 2020年10月7日59 59
 2020年11月15日51 51
 12/19/2020 18 18
 2021年1月12日26 26
 1/24/2021 82 82
 2/18/2021 10 10
 20/11/3 -37 -37
 4/5/2021 -17 -54
 6/16/2021 85 31
 
2条回答
当学会了学习
2020-09-08 18:20

感谢您的回复。 我现在有类似的设置。 我一直在寻找没有循环的解决方案。 循环运行非常慢。

谢谢

一周热门 更多>