点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
由于要添加150天和180天的列,因此我试图在HANA中重新创建"客户老化报告",但是在日期计算方面遇到了困难。
请参见下面的代码:
选择OCRD。" CardCode" AS"客户代码",OCRD。" CardName" AS"客户名称",SUM( 案件 当" SYSCred" <> 0时" SYSCred" * -1 ELSE" SYSDeb" END)AS"余额到期",IFNULL(SUM( 案件 当DAYS_BETWEEN(JDT1。" DueDate",(从DUMMY中选择NOW()" NOW"))<0 THEN 案件 当JDT1。" BalDueCred" <> 0则JDT1。" BalDueCred" * -1 ELSE JDT1。" BalDueDeb" 结束 END),0.00)AS" Future Remit",IFNULL(SUM( 案件 当(DAYS_BETWEEN(JDT1。" DueDate",(从DUMMY中选择NOW()" NOW"))> = 0并且 DAYS_BETWEEN(JDT1。" DueDate",(从DUMMY中选择NOW()" NOW"))<30)然后 案件 当JDT1。" BalDueCred" <> 0则JDT1。" BalDueCred" * -1 ELSE JDT1。" BalDueDeb" 结束 END),0.00)AS" 0-30天",IFNULL(SUM( 案件 当(DAYS_BETWEEN(JDT1。" DueDate",(从DUMMY中选择NOW()" NOW"))> = 30并且 DAYS_BETWEEN(JDT1。" DueDate",(从DUMMY中选择NOW()" NOW"))<60)然后 案件 当JDT1。" BalDueCred" <> 0则JDT1。" BalDueCred" * -1 ELSE JDT1。" BalDueDeb" 结束 END),0.00)AS" 31至60天",IFNULL(SUM( 案件 当(DAYS_BETWEEN(JDT1。" DueDate",(从DUMMY中选择NOW()" NOW"))> = 60并且 DAYS_BETWEEN(JDT1。" DueDate",(从DUMMY中选择NOW()" NOW"))<90)然后 案件 当JDT1。" BalDueCred" <> 0则JDT1。" BalDueCred" * -1 ELSE JDT1。" BalDueDeb" 结束 END),0.00)AS" 61至90天",IFNULL(SUM( 案件 当(DAYS_BETWEEN(JDT1。" DueDate",(从DUMMY中选择NOW()" NOW"))> = 90并且 DAYS_BETWEEN(JDT1。" DueDate",(从DUMMY中选择NOW()" NOW"))<120)然后 案件 当JDT1。" BalDueCred" <> 0则JDT1。" BalDueCred" * -1 ELSE JDT1。" BalDueDeb" 结束 END),0.00)AS" 91至120天",IFNULL(SUM( 案件 当DAYS_BETWEEN(JDT1。" DueDate",(从DUMMY中选择NOW()" NOW"))> = 120 THEN 案件 当" BalDueCred" <> 0时" BalDueCred" * -1 其他" BalDueDeb" 结束 END),0.00)AS" 120+天" 从JDT1, OCRD 在JDT1。" ShortName" = OCRD。" CardCode"和OCRD。" CardType" ='c' OCRD的GROUP。" CardCode",OCRD。" CardName" HAVING SUM( 案件 当" SYSCred" <> 0时" SYSCred" * -1 ELSE" SYSDeb" END)> 0 OR SUM( 案件 当" SYSCred" <> 0时" SYSCred" * -1 ELSE" SYSDeb" 结束)<0 OCRD的订单。" CardCode";
当前形式的语句相当混乱,因为许多代码重复了,而且不容易看出目的是什么。
我将其重写为这种形式:
我所做的是:
现在,该语句更易于阅读,实际上也应该运行得更快。
根据我现在的理解,结果行不足的原因可能是:
或
或
现在应该很容易地一一检查这些可能的原因。
Lars,
谢谢您使用CURRENT_DATE()选项的建议。
我遇到的困难是使用ADD_DAYS函数时。 我不小心从最初发布的代码中忽略了这一点。
我得到的错误是"("第7行第44列附近的语法不正确。
请参见下面的修改后的代码:
好吧,这实际上是我的错误:CURRENT_DATE函数调用没有括号()。
无论如何,现在应该是WHEN条件
从" due_date"到计算出的日期之间的天数,该天数大于或等于120。
计算出的日期应在1900年1月1日前加上X天。 那没有道理!
能否请您口头描述您要实施的规则?
关于上个世纪初的参考是什么?
您不想说类似的话吗?
"如果截止日期距离今天还有120天或更长时间,则..."?
嗨,拉尔斯,
您提供给我的逻辑是正确的,并且比我刚开始使用时更容易,但是在进行更改之后,查询将无错误运行,但不返回任何行。
基本上,我正在尝试重新创建"客户应收帐款"账龄查询,这样我可以包括150天和180天以上。 我正在尝试通过转换可在SQL中使用的查询来实现这一目标,但对于HANA界面和HANA语言中涉及的日期函数,我仍然是陌生的。
谢谢您到目前为止为我提供的所有帮助。
请参见下面的修改后的代码:
亲切的问候,
Vinolan Pillay
一周热门 更多>