从Oracle SQL转换为Open SQL的帮助

2020-09-04 21:35发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, (我很抱歉,因为我对...

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

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


大家好,

(我很抱歉,因为我对SAP或Open SQL都不很了解)

我正在尝试从Oracle转换以下SQL语句:

选择1
 来自sapsr3.zt01 t1
 内连接sapsr3.zt01 t2 ON(
         (
             t1.number_from <= t2.number_to
             AND t2.number_from <= t1.number_to
             )
         并不是 (
             t1.number_from = t2.number_from
             AND t2.number_to = t1.number_to
             )
         )
 t1.dat1 ='00000000'; 

(在这种情况下,我正在尝试检测可能重复或重叠的数字范围(number_from,number_to)。

因此,我以我认为正确的OPEN SQL语法编写此代码:

选择t1〜str1到w_str
 从zt01作为t1
 内联zt01为t2 ON(
         (
             t1〜number_from <= t2〜number_to
             AND t2〜number_from <= t1〜number_to
             )
         并不是 (
             t1〜number_from = t2〜number_from
             AND t2〜number_to = t1〜number_to
             )
         )
 t1〜dat1 ='00000000'。

然后我发现我不能在ON子句中使用NOT ...在其他任何SQL中,我都可以通过将括号内的所有关系取反,将=更改为<>并将AND更改为OR来省略NOT子句。 但是,似乎OPEN SQL也不喜欢OR。

有什么想法吗?

预先感谢

路易斯


5条回答
小灯塔
2020-09-04 22:02

首先,我在ON子句中使用NOT没问题。 您的ABAP版本是什么(我的版本是7.4):

 SELECT * FROM sflight内连接spfli ON((sflight〜carrid = spfli〜carrid)AND
                                             不(sflight〜connid = spfli〜connid))
   第二,我认为您的查询如下所示(假设两个表的from_date  
 SELECT t1〜str1
 FROM zt01 as t1 INNER JOIN zt01 as t2 ON((t1〜number_from <= t2〜number_to与
                                              t1〜number_from> t2〜number_from)AND
                                              t1〜number_to> t2〜number_to)
    进入w_str
 WHERE t1〜dat1 ='00000000'。

第三,我认为最好根据它们的键来联接表,您的查询感觉像是WHERE条件,而不是联接条件。

一周热门 更多>