And + Or 在一个 Select 语句中

问题描述 投票:0回答:2

在我的 select 语句中,我用 AND 将不同的条件链接起来。现在我需要一个条件 OR。 如何仅为这一属性添加此属性而不影响之前的其他 AND 语句? 这是我的编码:

SELECT pernr reinr pdatv pdatb pdvrs abrec FROM PTRV_PERIO
    INTO CORRESPONDING FIELDS OF TABLE lt_ptrv_perio
    WHERE pdatv GE pa_begda
    AND   pdatb LE pa_endda
    AND   abrec EQ '2'.

对于最后一个条件

abrec EQ '2'
,我还需要一个OR,例如
abrec EQ '2' OR '3'
。 我怎样才能以最好的方式添加这个而不影响其他AND?

感谢您的提示!

select abap opensql
2个回答
4
投票

使用 IN 子句代替:

SELECT pernr reinr pdatv pdatb pdvrs abrec 
  FROM PTRV_PERIO
  INTO CORRESPONDING FIELDS OF TABLE lt_ptrv_perio
 WHERE pdatv GE pa_begda
   AND pdatb LE pa_endda
   AND abrec IN ('2', '3').

另一个有效的替代方案是:

SELECT pernr reinr pdatv pdatb pdvrs abrec FROM PTRV_PERIO
  INTO CORRESPONDING FIELDS OF TABLE lt_ptrv_perio
 WHERE pdatv GE pa_begda
   AND pdatb LE pa_endda
   AND ( abrec EQ '2' OR abrec EQ '3' ).

3
投票

使用括号:

编辑: 似乎您需要在括号前后添加空格 请参阅此相关问题

SELECT pernr reinr pdatv pdatb pdvrs abrec FROM PTRV_PERIO
INTO CORRESPONDING FIELDS OF TABLE lt_ptrv_perio
WHERE pdatv GE pa_begda
AND   pdatb LE pa_endda
AND   ( abrec EQ '2' OR abrec EQ '3' )
© www.soinside.com 2019 - 2024. All rights reserved.