如何在HANA SQL中编写LOOP ENDLOOP

2020-08-21 21:56发布

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

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


大家好,

如何定义LOOP ENDLOOP; 在SQL中的状态与ABAP类似。

我的内部表中有数据,我想循环该int表并在循环和结束循环之间编写一些逻辑。

有人可以给我sql方案吗?

谢谢。

Ram

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

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


大家好,

如何定义LOOP ENDLOOP; 在SQL中的状态与ABAP类似。

我的内部表中有数据,我想循环该int表并在循环和结束循环之间编写一些逻辑。

有人可以给我sql方案吗?

谢谢。

Ram

付费偷看设置
发送
4条回答
一只江湖小虾
1楼-- · 2020-08-21 22:21
compass1988
2楼-- · 2020-08-21 22:29

也许您想解释一下在循环中要执行的操作; 可能是根据您的要求而存在的解决方案,而不使用循环。 通常,在SQL中考虑循环是不好的。 您应尽可能避免这种情况(而不仅仅是将旧的ABAP编码样式转换为HANA)。

CPLASF-自律
3楼-- · 2020-08-21 22:42

Vijay Chandra.R

这里是使用纯SQL解决您的要求(在您的评论中描述)的一种方法(考虑开始时的WITH子句只是声明一些示例数据-表) t1,t2,t3;在您不需要的情况下,必须在查询t1,t2和t3中用实际表替换):

,其中t1为(将" M1"选择为"材料"  ",'P1'为" Plant",to_date('20 -03-2020','DD-MM-YYYY')作为" Req Date",200作为" Pant'ty Qty"
              并从虚拟对象中选择" M2"作为"材料",选择" P1"作为"植物",将to_date('20 -03-2020','DD-MM-YYYY')作为"要求日期",将300作为"必需数量"  ),
      t2为(从虚拟对象选择" M1"作为"材料"," P1"作为"植物"," V1"作为"供应商"," 1001"作为" QuotaID"
              从虚拟对象中联合选择" M2"作为"材料"," P1"作为"植物"," V1"作为"供应商"," 1002"作为" QuotaID"
              并从虚拟对象中选择" M2"作为"材料",选择" P1"作为"植物",将" V2"作为"供应商",将" 1002"作为" QuotaID"),
      t3为(从虚拟对象中选择" 1002"作为" QuotaID",选择" 1"作为" Quota Item",选择40作为" Quota%"
              并从哑元中选择'1002'作为" QuotaID",'2'作为" Quota Item",60作为" Quota%")
             
 选择t1。"材料",
        t1。"植物",
        t1。"要求日期",
        t2_row。"供应商",
        Coalesce(t1。"需求数量"/img/100 * t3。"配额%",t1。"需求数量")为"需求数量"
 从(t1内部联接(选择t2。*,ROW_NUMBER()到(PARTITION BY t2。"材料",t2。"植物",t2。" QuotaID"顺序按t2。"供应商")作为t2_row的AS row_num)
        在t1上。"材料" = t2_row。"材料"和t1。"植物" = t2_row。"植物")
      t2_row上的左外部连接t3。" QuotaID" = t3。" QuotaID",t2_row.row_num = t3。" Quota Item";
 

对于该解决方案,我假设表3中的"配额项"按其等级/行号映射到表2中的供应商(因此,我使用ROW_NUMBER窗口函数)。 如果有特定的映射逻辑,则需要对其进行修改。

该语句产生以下结果:

SC_Yao
4楼-- · 2020-08-21 22:17

您好 Florian Pfeffer

下面 是必需的。 您可以针对此要求使用SQL进行指导吗?

致谢。

Vijay

# p#

一周热门 更多>