与DISTINCT一起执行多个JOIN

2020-09-14 08:40发布

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

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


亲爱的ABAP大师

早上好,目前我们的SAP系统已升级到:

S4HANA的西北部S/4HANA 1709的西北部7.52

SAP_ABAP 75C/SP2

对于下面使用DISTINCT和多JOIN进行编码,是否将其视为BAD编码?

我应该只用JOIN进行更改,以后再使用DELETE DUPLICATE吗?

使用INNER + LEFT OUTER进行联接也会影响性能吗?

 SELECT DISTINCT a〜matnr,a〜mtart,a〜matkl,a〜meins,a〜lvorm,
            b〜werks,b〜lgort,b〜charg,((b〜clabs + b〜ceinm))AS数量,
            c〜vfdat,c〜zustd,c〜lwedt,
            d〜maktx,
            e〜stprs,
            g〜waers,
            h〜prgrp,
            h〜werks
       来自mara AS
       内联mchb AS b
          开a〜matnr = b〜matnr
       内联接mch1 AS c
          开c〜matnr = b〜matnr
         与c〜charg = b〜charg
       左外连接MAkt AS d
          开d〜matnr = a〜matnr
       内部连接mbew AS e
          开e〜matnr = a〜matnr
          与e〜bwkey = b〜werks
       内胎t001k AS f
          开f〜bwkey = b〜werks
       内接头t001 AS g
          开g〜bukrs = f〜bukrs
       左外加入pgmi AS h
          开b〜matnr = h〜nrmit
         AND b〜werks = h〜wemit
       @it_s_matnr在哪里
         和一个〜mtart IN @it_s_mtart
         和一个〜matkl IN @it_s_matkl
         和b〜lgort IN @it_s_lgort
         与b〜werks EQ @i_werks
         AND c〜vfdat LE @(sy-datum + i_days)
         与c〜vfdat NE @l_vfdat
         和d〜spras EQ @gc_en
       INTO TABLE @gt_data。

 

请忠告。

非常感谢。

最好的问候

关。

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

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


亲爱的ABAP大师

早上好,目前我们的SAP系统已升级到:

S4HANA的西北部S/4HANA 1709的西北部7.52

SAP_ABAP 75C/SP2

对于下面使用DISTINCT和多JOIN进行编码,是否将其视为BAD编码?

我应该只用JOIN进行更改,以后再使用DELETE DUPLICATE吗?

使用INNER + LEFT OUTER进行联接也会影响性能吗?

 SELECT DISTINCT a〜matnr,a〜mtart,a〜matkl,a〜meins,a〜lvorm,
            b〜werks,b〜lgort,b〜charg,((b〜clabs + b〜ceinm))AS数量,
            c〜vfdat,c〜zustd,c〜lwedt,
            d〜maktx,
            e〜stprs,
            g〜waers,
            h〜prgrp,
            h〜werks
       来自mara AS
       内联mchb AS b
          开a〜matnr = b〜matnr
       内联接mch1 AS c
          开c〜matnr = b〜matnr
         与c〜charg = b〜charg
       左外连接MAkt AS d
          开d〜matnr = a〜matnr
       内部连接mbew AS e
          开e〜matnr = a〜matnr
          与e〜bwkey = b〜werks
       内胎t001k AS f
          开f〜bwkey = b〜werks
       内接头t001 AS g
          开g〜bukrs = f〜bukrs
       左外加入pgmi AS h
          开b〜matnr = h〜nrmit
         AND b〜werks = h〜wemit
       @it_s_matnr在哪里
         和一个〜mtart IN @it_s_mtart
         和一个〜matkl IN @it_s_matkl
         和b〜lgort IN @it_s_lgort
         与b〜werks EQ @i_werks
         AND c〜vfdat LE @(sy-datum + i_days)
         与c〜vfdat NE @l_vfdat
         和d〜spras EQ @gc_en
       INTO TABLE @gt_data。

 

请忠告。

非常感谢。

最好的问候

关。

付费偷看设置
发送
4条回答
哎,真难
1楼-- · 2020-09-14 08:58

作为一般原则,使数据库完成工作比在ABAP中完成工作更为可取。 因此,只要您的查询产生正确的结果,就可以了。

但是,您不应该使用AS结构。 像AS和a〜matnr。 如果省略AS并直接使用表名,则更容易理解和清楚哪个字段来自哪里。 mara〜matnr。

hongfeng1314
2楼-- · 2020-09-14 09:19

粘贴代码时,请右键单击"粘贴为纯文本"。 这样,您就不会粘贴HTML标记。

jovirus
3楼-- · 2020-09-14 09:12

亲爱的马修,

早上好,谢谢。

非常感谢您的指导。

最好的问候

关。

d56caomao
4楼-- · 2020-09-14 09:03

亲爱的马修,

早上好,感谢您的分享。

赞赏。

最好的问候

关。

一周热门 更多>